簡體   English   中英

錯誤-PHP-cURL-連接中的未知SSL協議錯誤-

[英]Error - PHP - cURL - Unknown SSL protocol error in connection -

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $xml_url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_HEADER, false);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0);

$xml = curl_exec($ch);

if(curl_exec($ch) === false) 
{ echo curl_error($ch); }
else 
{ echo 'Operation completed without any errors'; }

curl_close($ch);
return $xml;

上面的代碼給出了以下錯誤。

連接到api.site.com的未知SSL協議錯誤:443

根據許多人的建議,以下代碼可以解決上述問題,但無濟於事。 仍然出現相同的錯誤。

curl_setopt ($ch, CURLOPT_SSLVERSION, 3);

我也按照建議嘗試了以下內容,但仍然出現相同的錯誤。

curl_setopt ($ch, CURLOPT_SSLVERSION, 'CURL_SSLVERSION_SSLv3' );

請提出我還應該在代碼中添加哪些內容來修復此錯誤。

謝謝,

您只是忽略了SSL證書驗證,可能是它將幫助您解決問題,請在向CURL請求時使用以下代碼。

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

您可以嘗試此代碼。

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $xml_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_HEADER, false);

$xml = curl_exec($ch);

if($xml === false) { 
    echo curl_error($ch); 
}else{ 
    echo 'Operation completed without any errors'; 
}
curl_close($ch);
return $xml;

您也可以使用此類進行curl請求,

https://gist.github.com/sourovroy/1fba93188470bbe3eefa15cd17533b23

您可以通過curl verbose模式檢查網站使用的TLS版本:

curl_setopt($curl, CURLOPT_VERBOSE, true);

輸出將是這樣的:

...
SSL connection using TLS1.0 / RSA_3DES_EDE_CBC_SHA1
...

然后像這樣設置CURLOPT_SSL_CIPHER_LIST

curl_setopt($curl, CURLOPT_SSL_CIPHER_LIST, "TLSv1");

其中“ TLSv1”是網站使用的TLS版本。

在curl選項中更改SSL版本和VERIFY_PEER / HOST不能解決我的問題,但是這種方法可以解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM