【发布时间】:2012-04-04 04:26:28
【问题描述】:
我在我的开发服务器上遇到了问题,其中 cURL 虽然可以完美地与任何 HTTP 一起工作,但不能与任何 HTTPS 一起正常工作——即使是具有不同协议的完全相同的资源(为了测试我一直在请求 google.com使用 HTTP 和 HTTPS)。
返回的 cURL 错误是 35:
SSL/TLS 握手中出现问题。
我已经梳理了网络和 SO 的解决方案,所有这些都是将 CURLOPT_SSL_VERIFYPEER 设置为 false,这不会改变任何内容,或者下载证书文件并将 CURLOPT_CAINFO 设置为其路径,这也不会改变任何内容。
在设置证书时,我按照this tutorial 和this tutorial 的说明,尝试为我请求的资源下载证书,并下载证书包。
我还尝试将 CURLOP_PORT 显式设置为 443。为了我的问题的彻底性,我设置的其他选项是 CURLOPT_VERBOSE=true、CURLOPT_RETURNTRANSFER=true 和 CURLOPT_SSL_VERIFYHOST=2(我已经尝试了 1 和 2 的每种组合VERIFYPEER 真假)。我还在phpinfo() 中确保我拥有 OpenSSL 并且它已启用。
我使用了很多旧代码,它们在我的上一个生产服务器上运行良好,所以这段代码以前也可以运行。但是那个主机是共享主机,我不知道那里的大部分配置。
【问题讨论】:
-
您访问的是同一个 URL 吗?当我遇到这个问题时,你已经完成了大部分相同的研究。
-
我同时使用了 http://www.google.com,效果很好;和 https://www.google.com,但没有。
-
@Spezied,如果提供的答案回答了您的问题,您能否选择它作为您的答案,以便可以关闭问题?谢谢。
-
它没有回答这个问题,因为我在问题中明确指出这正是我在 SO 和 Internet 上的其他地方找到的不令人满意的答案。从那以后,我得出结论,它一定不能在 PHP 中修复。 PHP或我的扩展或其他东西有问题。虽然我仍然不知道如何解决这个问题。我会四处看看。还是谢谢你。
标签: php ssl curl https php-curl