PHP Curl:SSL例程:SSL23_GET_SERVER_HELLO:原因(1112)

9

我正在尝试执行HTTPS请求:

curl_setopt($curl, CURLOPT_URL, 'https://***.com');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_POST, false);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiesFile);
curl_setopt($curl, CURLOPT_VERBOSE, true);
$out = curl_exec($curl);

请求后,$out为空,并且我得到了这个日志:

* About to connect() to ***.com port 443 (#0)
*   Trying *.*.*.*...
* connected
* Connected to ***.com (*.*.*.*) port 443 (#0)
* error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)
* Closing connection #0

为什么?

你的平台和PHP以及OpenSSL的版本是什么?请检查 phpinfo(); - Waygood
5
谷歌搜索的第一个结果指向了一个在SO上的问题,解释了为什么会发生这种情况:https://dev59.com/PWoy5IYBdhLWcg3wWcmg - 这样的研究效果很差,是吧。 - fvu
@fvu,谢谢,curl_setopt($ch, CURLOPT_SSLVERSION,3); 对我有用。 - artem
@Waygood,PHP 5.4.10,OpenSSL/0.9.8x,Mac OS X 10.8.4 - artem
2个回答

26

修复:

curl_setopt($ch, CURLOPT_SSLVERSION,3); 

非常感谢你,补充一下,最好利用SPL定义的常量,像这样:curl_setopt($ch, CURLOPT_SSLVERSION,CURL_SSLVERSION_SSLv3); - codarrior
1
错误:SSL:无法创建上下文:错误:140A90C4:SSL例程:SSL_CTX_new:传递了空的ssl方法 - ninja

1
如果您正在使用PRTG并出现此错误,请转到设置并将其从“SSL V2或V3”更改为“SSL V3”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接