由于某种原因,我无法将CURL与HTTPS一起使用。一切都很好,直到我运行curl库的升级。现在,我在尝试执行CURL请求时遇到此响应: SSL CA证书问题(路径?访问权限?)
根据此处发布的有关相关问题的建议,我尝试执行以下操作:
禁用主机和对等方的验证
curl_setopt($cHandler, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);
启用CURLOPT_SSL_VERIFYPEER
并指向从http://curl.haxx.se/docs/caextract.html下载的cacert.pem
curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($cHandler, CURLOPT_CAINFO, getcwd() . "/positiveSSL.ca-bundle");
我还尝试使用positiveSSL.ca-bundle做同样的事情,它是作为我尝试连接的服务器的捆绑CA证书提供的。
使用curl.cainfo=cacert.pem
编辑php ini设置(文件位于同一目录中,可通过apache访问)
将/etc/pki/nssdb
重命名为/etc/pki/nssdb.old
不幸的是,以上都没有能够解决我的问题而且我经常遇到SSL CA证书(路径?访问权限?)消息的问题。
我首先不需要这个验证(我知道安全问题)。
有人有任何其他建议吗?
更新
更新到最新的库并重新启动整个盒子后,不仅仅是我正在做的apache似乎现在都在工作了!!!
答案 0 :(得分:203)
根据文档:要验证主机或对等证书,您需要使用CURLOPT_CAINFO
选项指定备用证书,或者可以使用CURLOPT_CAPATH
选项指定证书目录。
另请参阅CURLOPT_SSL_VERIFYHOST:
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
答案 1 :(得分:1)
我们在CentOS7机器上遇到了同样的问题。禁用VERIFYHOST
VERIFYPEER
无法解决问题,我们不再有cURL错误,但响应仍然无效。对cURL执行的同一链接执行wget
也会导致证书错误。
- >我们的解决方案也是重新启动VPS,这解决了它,我们能够再次完成请求。
对我们来说,这似乎是一个内存损坏问题。重新启动VPS再次将内存重新加载到内存中,现在它可以正常工作。因此,如果@clover
的上述解决方案不起作用,请尝试重新启动计算机。