我在我的开发服务器上遇到了问题,其中 cURL 虽然可以完美地与任何 HTTP 一起工作,但不能与任何 HTTPS 一起正常工作——即使是具有不同协议的完全相同的资源(为了测试我一直在使用两种 HTTP 请求 google.com和 HTTPS)。
返回的 cURL 错误为 35:
SSL/TLS 握手中某处出现问题。
我已经梳理了网络和 SO 的解决方案,所有这些都是将 CURLOPT_SSL_VERIFYPEER 设置为 false,这不会改变任何内容,或者下载证书文件并将 CURLOPT_CAINFO 设置为其路径,这也不会改变任何内容。
设置证书时,我按照本教程和本教程的说明,尝试下载我请求的资源的证书,并下载证书包。
我还尝试将 CURLOP_PORT 显式设置为 443。为了我的问题的彻底性,我设置的其他选项是 CURLOPT_VERBOSE=true、CURLOPT_RETURNTRANSFER=true 和 CURLOPT_SSL_VERIFYHOST=2(我已经尝试了 1 和 2 的每种组合以及 VERIFYPEER 都为 true和错误的)。我还确保phpinfo()
我有 OpenSSL 并且它已启用。
我使用了很多在我的最后一个生产服务器上完美运行的旧代码,所以这段代码以前也可以运行。但是那个主机是共享主机,我不知道那里的大部分配置。