2015-04-22 79 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); 

我過去幾天一直在嘗試很多,但所有的嘗試都是徒勞的。

我試圖解釋我所做的所有事情,但任何人都請詢問是否需要更多信息。任何幫助將不勝感激。

非常感謝

回答

相關問題