我一直在使用以下代碼塊從使用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);
我過去幾天一直在嘗試很多,但所有的嘗試都是徒勞的。
我試圖解釋我所做的所有事情,但任何人都請詢問是否需要更多信息。任何幫助將不勝感激。
非常感謝