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

标签 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 可以访问 .pem 文件,例如 file_get_contents,所以看起来不是文件访问/权限问题。

此问题持续存在的原因可能是什么?

我在运行:

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

最佳答案

响应迟缓,但我遇到了同样的问题,我解决它的方法是升级到 php 5.3。我没有看到任何明确的说“5.2 没有进行适当的证书验证”,但是使用 CURLOPT_CAINFO 一切都正确。升级到 5.3 即可。

关于php - CURL: SSL 证书失败,验证 CA 证书是否正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18702238/

相关文章:

ssl - curl -k 是否也适用于过期的证书?

c++ - 初始化 SSL 和 libcurl 并获取 "out of memory"

ssl - Play Store Alert - onReceivedSSLError 的不安全实现

Mac OSX 上的 Java 进程在通过网络服务器调用时似乎为 "hang",但在命令行中正常

php - DVWA 无法访问

api - 如何排查与 Google Adsense API 的连接问题

php - Composer 尝试更新包时出错

php - 使 PHP 计算器存储和显示历史记录

php - 编辑文本元素时重置后端用户设置

python - 如何通过 Restful 服务调用进行单点登录 (SSO)