我有一個網(wǎng)絡(luò)應(yīng)用程序,可以對不同的站點進行curl 調(diào)用以獲取數(shù)據(jù)。由于我的網(wǎng)絡(luò)空間提供商(ionos)對服務(wù)器進行了一些更改,curl 調(diào)用不再起作用。我的卷曲調(diào)用如下所示:$ch = curl_init();curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);curl_setopt($ch, CURLOPT_URL, $link);curl_setopt($ch, CURLOPT_HEADER, false);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$sResult = curl_exec($ch);curl_close($ch);它不起作用。$s結(jié)果為空。我更改了代碼并嘗試了$test = file_get_contents($link);這給了我錯誤:PHP Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small我的curl 調(diào)用或file_get_contents 調(diào)用中是否缺少某些內(nèi)容?
4 回答

ABOUTYOU
TA貢獻1812條經(jīng)驗 獲得超5個贊
對于此錯誤,通常的建議是將 /etc/ssl/openssl.cnf 中的“CipherString”參數(shù)設(shè)置為“DEFAULT:@SECLEVEL=1”。
在 PHP 中,您可以使用以下方法實現(xiàn)相同的目的curl_setopt()
:
curl_setopt($ch,?CURLOPT_SSL_CIPHER_LIST,?'DEFAULT@SECLEVEL=1');
這是比編輯 openssl.cnf 更好的解決方案,因為它允許您放松僅針對一個特定調(diào)用(而不是系統(tǒng)范圍)的安全性。

大話西游666
TA貢獻1817條經(jīng)驗 獲得超14個贊
如果您使用 file_get_contents() 函數(shù),則效果很好
$context=array(
"ssl"=>array(
'ciphers' => 'DEFAULT:!DH'
),
);
$json = file_get_contents($url, false, stream_context_create($context));

繁星coding
TA貢獻1797條經(jīng)驗 獲得超4個贊
我在curl 命令行上收到此錯誤。
卷曲請求
curl -k --request POST --url 'https://abc.com.pk/token/api?grant_type=client_credentials' --header 'Authorization: Basic a0NiZXNMTXFlJBY1lBQjJINmtqWVFh' --ciphers DEFAULT@SECLEVEL=1
解決方案:
--ciphers DEFAULT@SECLEVEL=1
- 4 回答
- 0 關(guān)注
- 268 瀏覽
添加回答
舉報
0/150
提交
取消