SSL页面上的PHP Curl错误

SSL页面上的PHP Curl错误,php,curl,Php,Curl,我使用了一段时间来检索特定SSL网页内容的PHP脚本突然开始失败,并抛出以下错误(该页面始终是SSL页面): 有问题的网页: 代码: 我尝试过谷歌提出的几种不同的解决方案,比如设置不同的curl_setopt参数,但到目前为止没有成功。如有任何建议,将不胜感激 本地Windows PHP安装 PHP版本:5.3.28 Curl版本:7.30.0 SSL版本:OpenSSL/0.9.8y您可以尝试通过添加以下内容将TLS设置为使用更现代的版本(1.2): curl_setopt($ch, CUR

我使用了一段时间来检索特定SSL网页内容的PHP脚本突然开始失败,并抛出以下错误(该页面始终是SSL页面):

有问题的网页:

代码:

我尝试过谷歌提出的几种不同的解决方案,比如设置不同的curl_setopt参数,但到目前为止没有成功。如有任何建议,将不胜感激

本地Windows PHP安装
PHP版本:5.3.28
Curl版本:7.30.0

SSL版本:OpenSSL/0.9.8y

您可以尝试通过添加以下内容将TLS设置为使用更现代的版本(1.2):

curl_setopt($ch, CURLOPT_SSLVERSION, 6);

有关其他值,请参见s
CURLOPT\u SSLVERSION

似乎是更新的时候了。您尝试连接到的站点已放弃对较旧的、不安全的协议(如SSL2、SSL3和TLS1)的支持,从而保护了它们的通信安全。你可以在这里亲眼看到:

您使用的OpenSSL版本在Internet标准中很古老,并且被认为是非常不安全的,因为它包含大量漏洞。TLS1.1和1.2协议被添加到OpenSSL v1.0.1中

1.0.0h和1.0.1之间的变化[2012年3月14日]…*)添加TLS v1.2 客户端对客户端身份验证的支持。保留缓存 由于我们不知道要使用的哈希算法,握手记录的时间更长 直到收到证书请求消息之后。 [史蒂夫·汉森]

*)初始TLS v1.2客户端支持。添加默认签名 算法 扩展包括我们支持的所有算法。解析新签名 客户端密钥交换中的格式。放宽某些ECC签名限制 TLS v1.2,如RFC5246所示。 [史蒂夫·汉森]


更新堆栈的其余部分也不会有什么坏处。

服务器上安装了什么版本的OpenSSL和PHP?您可能需要更新它们。谢谢您的回复。这只是在我的windows机器上的本地PHP安装。PHP版本5.3.28 SSL版本OpenSSL/0.9.8y像您要访问的网站一样,现在只允许TLS 2或更高版本。正如@BA_Webimax所说,您可能需要更新您的终端。谢谢。但是,将错误输出更改为此值时,错误输出没有任何更改。感谢您提供的详细输入(以及上面的其他输入)。我更新了我的PHP堆栈,现在一切都很好。
function get_data($url) 
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
curl_setopt($ch, CURLOPT_SSLVERSION, 6);