繁体   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