CURL:SSL证书失败,验证CA证书是否正常

时间:2013-09-09 15:54:56

标签: php curl ssl https

我正在Windows机器上运行本地XAMPP服务器。

从这台服务器,我试图通过CURL连接到SSL加密页面。

我确实遇到了以下错误:

SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

我意识到我可以使用...

简单地禁用SSL验证
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

..但我真的不想这样做,这就是使用SSL的重点。

我在这里看到了几个答案,指向将CURL选项“CURLOPT_CAINFO”设置为可在此处获取的.pem文件:http://curl.haxx.se/ca/cacert.pem

curl_setopt($ch, CURLOPT_CAINFO, 'C:\xampp\cacert.pem' );

我确实将文件放在给定的文件夹中,并在运行curl_exec之前运行上面的命令。但我仍然得到与以前相同的错误。

我还尝试从我尝试连接的网站下载证书,但错误信息仍然相同。

PHP可以使用file_get_contents访问.pem文件,因此它似乎不是文件访问/权限问题。

这个问题的原因可能是什么?

我正在跑步:

  • PHP版本:5.2.9
  • cURL信息:libcurl / 7.16.0 OpenSSL / 0.9.8i zlib / 1.2.3

1 个答案:

答案 0 :(得分:1)

迟到的回应,但我有同样的问题,我修复它的方式是升级到PHP 5.3。我没有看到任何明确的说“5.2没有进行适当的证书验证”但你通过使用CURLOPT_CAINFO完成了一切。升级到5.3,它将起作用。