我无法通过curl访问https网站,而且我被卡住了。
可以在浏览器中打开网址并使用以下安全连接:
使用a加密并验证与此站点的连接 强协议(TLS 1.2),强大的密钥交换(ECDHE_RSA with 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工作,如果网址被重定向到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例程:SSL23_GET_SERVER_HELLO:tlsv1警报协议版本
1:错误:1409442E:SSL例程:SSL3_READ_BYTES:tlsv1警报协议版本
2:与www.example.com:443
相关的未知SSL协议错误3:错误:14094410:SSL例程:SSL3_READ_BYTES:sslv3警报握手失败
4:错误:1407742E:SSL例程:SSL23_GET_SERVER_HELLO:tlsv1警报协议版本
5:错误:1407742E:SSL例程:SSL23_GET_SERVER_HELLO:tlsv1警报协议版本
6:错误:1407742E:SSL例程:SSL23_GET_SERVER_HELLO:tlsv1警报协议版本
由于网站正在使用&#34; TLS 1.2&#34;对于安全连接,我认为6是正确的值,因为它代表&#34; CURL_SSLVERSION_TLSv1_2&#34;
但是我仍然坚持错误响应:&#34; 1407742E:SSL例程:SSL23_GET_SERVER_HELLO:tlsv1警报协议版本&#34;
有人知道可能是什么问题吗?
cUrl版本:7.21.0 Open SSL版本:OpenSSL 0.9.8q 2010年12月2日 openssl版本号:9470239
答案 0 :(得分:1)
OpenSSL 0.9.8q 2010年12月2日
这个不再支持的OpenSSL版本不支持现代协议(TLS 1.2)和现代密码。此外,可能是该站点需要TLS SNI扩展,旧软件可能不支持该扩展。
由于您访问的网站的网址未知,因此未知这些问题到底是什么问题。但我非常确定这是其中一个原因,OpenSSL,curl和它的PHP绑定的升级将解决这个问题。
由于网站正在使用&#34; TLS 1.2&#34;对于安全连接,我认为6是正确的值,因为它代表&#34; CURL_SSLVERSION_TLSv1_2&#34;
由于此版本的OpenSSL不支持TLS 1.2尝试使用TLS 1.2使用此设置无法解决问题,但可能会使问题变得更糟。尝试使用TLS 1.0,因为这是OpenSSL版本可以做的最多。