[英]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.