PHP CURL CURLOPT_SSL_VERIFYPEER被忽略

出于某种原因,我无法使用HTTPS的CURL。 一切工作正常,直到我运行curl库的升级。 现在我在尝试执行CURL请求时遇到此响应: SSL CA证书(path访问权限?)的问题

以下是关于相关问题的build议,我试图做到以下几点:

  • 禁用主机和对等的validation

    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做同样的事情,这个bundle是作为我试图连接的服务器的bundle CA证书提供的。

  • curl.cainfo=cacert.pem编辑php ini设置curl.cainfo=cacert.pem (文件在同一目录下,可以通过apache访问)

  • /etc/pki/nssdb重命名为/etc/pki/nssdb.old

不幸的是,以上都不能解决我的问题,我不断得到SSL CA证书(path?访问权限?)消息的问题。

首先我不需要validation(我知道安全问题)。

有人有其他build议吗?

UPDATE

更新到最新的库,并重新启动整个盒子后,不只是我正在做的这一切似乎都在工作了!

根据文档:要validation主机或对等证书,您需要使用CURLOPT_CAINFO选项指定备用证书,或者可以使用CURLOPT_CAPATH选项指定证书目录。

再看看CURLOPT_SSL_VERIFYHOST:1来检查SSL对等证书中是否存在公用名。 2检查是否存在通用名称,并validation它是否与所提供的主机名相匹配。

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

我们在CentOS7机器上遇到同样的问题。 禁用VERIFYHOST VERIFYPEER没有解决问题,我们没有cURL错误了,但响应仍然是无效的。 对cURL做同样的链接做wget也导致证书错误。

– >我们的解决scheme也是重新启动VPS,这解决了它,我们能够再次完成请求。

对我们来说,这似乎是一个记忆腐败的问题。 重新启动VPS重新加载在内存中的库文件,现在它工作。 所以如果从@clover上面的解决scheme不起作用尝试重新启动您的机器。