我无法通过curl访问https站点,而且我被卡住了。
url可以在浏览器中打开,并使用以下安全连接:
对此站点的连接使用强协议(TLS 1.2)、强密钥交换(ECDHE_RSA和P-256)和强密码(AES_128_GCM)进行加密和身份验证。
在这里,我使用的php cUrl脚本:
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,$Org_Input); //$Org_Input
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3');
curl_setopt($curl, CURLOPT_AUTOREFERER, true); //updates the referrer
curl_setopt($curl, CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_SSLVERSION, 6);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,0);
$response= curl_exec($curl);
if (FALSE === $response) {
echo "cUrl Error: " . curl_error($curl) . "<br><br>";
}该脚本以前使用过http url,现在如果将url重定向到https,则会引起问题。我相信它与curl_setopt有关($curl,CURLOPT_SSLVERSION,6);
我试着用剧本
for($i=0;$i<=6;$i++) {
//if($i==2) continue;
$ch = curl_init($Org_Input);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSLVERSION, $i);
if(curl_exec($ch) === false)
echo $i.': ' . curl_error($ch) . "<br>";
else
echo $i.': works<br>';
echo "\n";
curl_close($ch);
} 我得到以下错误消息:
0:错误:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1警报协议版本
1:错误:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1警报协议版本
2:与www.example.com:443相关的未知SSL协议错误
3:错误:14094410:SSL routines:SSL3_READ_BYTES:sslv3警报握手失败
4:错误:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1警报协议版本
5:错误:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1警报协议版本
错误:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1警报协议版本
由于该网站使用"TLS 1.2“作为安全连接,我相信6是正确的值,因为它代表"CURL_SSLVERSION_TLSv1_2”
但是,我仍然坚持错误响应:"1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1警报协议版本“
,有人知道会有什么问题吗?
cUrl版本:7.21.0OpenSSL版本: OpenSSL 0.9.8q 2 201012月
发布于 2017-05-12 10:44:07
2010年12月2日OpenSSL 0.9.8q
这种不再支持的OpenSSL版本不支持现代协议(TLS1.2)和现代密码。此外,该站点可能需要TLS SNI扩展,而旧软件可能不支持该扩展。
现在还不清楚这些问题中到底有什么是真正的问题,因为您到达的站点的URL是未知的。但我很肯定这就是其中一个原因,OpenSSL、curl和PHP绑定的升级将解决这个问题。
由于该网站使用"TLS 1.2“作为安全连接,我相信6是正确的值,因为它代表"CURL_SSLVERSION_TLSv1_2”
由于此版本的OpenSSL不支持TLS1.2,尝试使用此设置并不能解决问题,但可能会使问题变得更糟。尝试使用TLS1.0代替,因为这是这个OpenSSL版本所能做的最多的。
https://stackoverflow.com/questions/43935450
复制相似问题