2015-04-22 77 views
5

我一直在使用以下代码块从使用cURL的HTTPS网站收集数据。cURL错误(35):错误:14077458:SSL例程:SSL23_GET_SERVER_HELLO:tlsv1无法识别的名称

$q = 'https://www.example.org/'; // for example 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $q); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 

$json = curl_exec($ch); 

卷曲显示以下错误

error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 unrecognized name 

这可能与旧的OpenSSL的版本,但由于该网站是在托管共享,服务器端的设置不能在瞬间改变。我所能做的就是改变cURL参数。

我在此检查了https://www.ssllabs.com/ssltest/analyze.html以查看该服务器的可用协议,发现SSL3和SSL2不可用,但TLS 1.2,TLS 1.1和TLS 1.0可用。在Google上搜索时,我发现它最好不指定SSL版本,它实际上会自动协商使用的最佳级别。虽然,我尝试在CURLOPT_SSLVERSION中设置TLS版本(如下所示),但会发生相同的错误。

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); 

我过去几天一直在尝试很多,但所有的尝试都是徒劳的。

我试图解释我所做的所有事情,但任何人都请询问是否需要更多信息。任何帮助将不胜感激。

非常感谢

回答

相关问题