首页 > 解决方案 > PHP cURL 错误:错误:14077410:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报握手失败

问题描述

**我已经搜索了stackoverflow以及其他来源,不幸的是,即使我尝试了各种方法,我也没有完美的解决方案来解决这个问题,所以我的请求是帮助代码不共享任何链接**

我在 Windows 7 上使用 ZeroXIII - 13.3.2 这是我用于下载网页的 php Curl 函数

function gdllssl3($target_url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36');
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt ($ch, CURLOPT_CAINFO, "D:\cacert-2019-05-15.pem");
curl_setopt($ch, CURLOPT_SSLVERSION,4);
curl_setopt($ch, CURLOPT_TIMEOUT,10);
$html= curl_exec($ch);
if (!$html) {
        echo "<br />cURL error number:" .curl_errno($ch);
        echo "<br />cURL error:" . curl_error($ch);
}
return $html;
}


echo $url=gdllssl3('https://www.ratemyagent.com.au/real-estate-profile/sales/new-south-wales/agents');

它返回给我这个错误

cURL 错误号:35 cURL 错误:错误:14077410:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报握手失败

使用从 Mozilla 提取的最新 CA 证书

标签: phpsslcurl

解决方案


您似乎正在尝试连接到支持 TLS v1.1 和 TLS v1.2 的远程服务器,而不是 TLS v1.0

您能否尝试更改此行:

curl_setopt($ch, CURLOPT_SSLVERSION, 4);

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_1);

CURLOPT_SSLVERSION 4(CURL_SSLVERSION_TLSv1_0) 表示 TLS v1.0,而5(CURL_SSLVERSION_TLSv1_1) 表示 TLS v1.1

有关信息,TLS v1.0 现在已弃用,出于安全原因必须避免使用。 https://blog.pcisecuritystandards.org/are-you-ready-for-30-june-2018-sayin-goodbye-to-ssl-early-tls

最终,正如 Patrick Mevzek 在下面的评论中所提到的,您最好完全删除该行以让 curl 模块选择最受支持的协议,如文档中所述(PHP cURL


推荐阅读