【发布时间】:2013-02-14 15:52:41
【问题描述】:
由于某种原因,我无法将 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.pemcurl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($cHandler, CURLOPT_CAINFO, getcwd() . "/positiveSSL.ca-bundle"); 我还尝试对作为我尝试连接的服务器的捆绑 CA 证书提供的 positiveSSL.ca-bundle 执行相同的操作。
使用
curl.cainfo=cacert.pem编辑php ini 设置(文件在同一目录中,可供apache 访问)将
/etc/pki/nssdb重命名为/etc/pki/nssdb.old
不幸的是,以上方法都无法解决我的问题,并且我经常收到 SSL CA 证书问题(路径?访问权限?)消息。
而且我一开始就不需要这个验证(我知道安全问题)。
还有人有其他建议吗?
更新
在更新到最新的库并重新启动整个机器之后,不仅仅是我正在做的 apache 现在似乎又可以工作了!!!
【问题讨论】:
-
您是否升级了针对不同 SSL 堆栈编译的 Curl 库(可能是 GnuTLS 与 OpenSSL)?
-
我不这么认为。系统是 Fedora 16,确实是 yum update 的情况。最烦人的是我不需要/想要整个验证,而且我似乎无法简单地禁用它。
-
如果您的目标是使用 HTTPS 来确保安全,您总是希望有这个验证过程。
-
我知道这一点,但是我在这里的用例使它有点多余。此外,我已将 curl 更新为最新可用,并将 php 更新为 5.4。现在,错误消息消失了,但我也没有从 curl 中得到任何内容 :)
-
哈,现在我在某个地方 curl_errno 函数报告状态 77,根据手册是 CURLE_SSL_CACERT_BADFILE。