【发布时间】:2012-08-04 18:08:59
【问题描述】:
我正在使用 cUrl 和 Php(最新稳定的 Ubuntu 版本)来获取远程 https 页面,并且 curl_exec 在达到超时后返回 false。显然我正在使用这些设置:
curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, 0);
使用wireshark,似乎服务器在“Client Hello”之后没有应答。 一些奇怪的事实:
- 用 perl 编写的相同脚本由 CLI 在同一台机器上运行
- 运行旧机器的完全相同的代码可以正常工作
提示?有人建议重新编译 curl 和 openssl ......我可以在开发机器上这样做,但生产服务器有同样的问题,为了便于维护,我想只保留原始数据包...... 谢谢!
【问题讨论】:
-
我知道这将是一个适当的面部护理时刻,但请您仔细检查您是否确实将
https作为 URL 方案并且没有错过s?如果您尝试启动与仅寻找纯文本数据的 TCP 端口的 SSL 连接,我可以看到这种行为......我认为这不太可能是 cURL 问题。您也可以尝试强制使用特定的 SSL 版本(CURLOPT_SSLVERSION,从强制 v3 开始)。值得测试一下您是否可以使用 cURL 执行简单的 HTTPS GET,例如https://google.com/ -
是的,绝对不是卷曲问题。还要检查您的 DNS。
-
强制 SSLVERSION 为 3。感谢 DaveRandom!