PHP cUrl ssl 超时时间

3

我正在使用最新稳定版的Ubuntu操作系统,结合Php和cUrl来获取一个远程的https页面,但是当达到超时时间后,curl_exec函数返回了false。显然,我正在使用以下这些设置:

curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER,   0);
curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST,   0);

使用Wireshark,看起来服务器在“客户端Hello”后没有回应。 一些奇怪的事实:
  1. 相同的Perl脚本在同一台机器上通过CLI运行
  2. 完全相同的代码在旧机器上正确运行
提示?有人建议重新编译curl和openssl...我可以在开发机器上做到这一点,但生产服务器也存在同样的问题,为了方便维护,我想只保留原始数据包... 谢谢!

1
我知道这可能是一个令人尴尬的时刻,但请您确认一下您是否确实将URL方案设置为https,并且没有遗漏s?如果您尝试通过TCP端口初始化SSL连接以查找纯文本数据,则可能会出现此行为...我认为这不太可能是cURL的问题。您还可以尝试强制使用特定的SSL版本(CURLOPT_SSLVERSION,从强制使用v3开始)。值得测试一下,看看是否可以使用cURL进行简单的HTTPS GET,例如到https://google.com/ - DaveRandom
是的,绝对不是一个curl问题。 也检查一下你的DNS。 - Dark
强制使用SSL版本3已经起效。感谢DaveRandom! - rcason
1个回答

6
解决方法:
使用以下代码: curl_setopt($soap_do, CURLOPT_SSLVERSION, 3); 这个代码可以解决问题。

谢谢。这个答案是解决我的问题的关键。 - David Bélanger

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