首页  >  文章  >  后端开发  >  尽管禁用验证,如何解决 PHP CURL 中的“SSL CA 证书问题”错误?

尽管禁用验证,如何解决 PHP CURL 中的“SSL CA 证书问题”错误?

DDD
DDD原创
2024-10-20 07:20:02954浏览

How to Resolve

对 PHP CURL 中忽略的 CURLOPT_SSL_VERIFYPEER 进行故障排除

问题:

用户遇到以下问题:尽管将 CURLOPT_SSL_VERIFYPEER 和 CURLOPT_SSL_VERIFYHOST 设置为 false,使用 CURL 的 HTTPS 请求仍会引发“SSL CA 证书出现问题”错误。

原因和解决方案:

成功验证使用 CURL 的主机或对等证书,您需要使用 CURLOPT_CAINFO 指定备用证书或使用 CURLOPT_CAPATH 指定证书目录。

此外:

  • CURLOPT_SSL_VERIFYHOST

    • 设置为 1 以检查 SSL 对等证书中是否存在公用名。
    • 设置为 2 以检查公用名是否存在并将其与提供的主机名进行匹配。

建议代码:

禁用主机和对等点的验证:

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

启用验证并指定 CA 证书文件:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_CAINFO, "/path/to/cacert.pem");

附加说明:

  • 确保 CA 证书文件有效且可由服务器访问。
  • php.ini中的curl.cainfo设置也可用于指定CA证书文件。
  • 将/etc/pki/nssdb重命名为/etc/pki/nssdb.old以重置证书颁发机构。

更新:

更新库并重新启动系统后,问题可能会自行解决。

以上是尽管禁用验证,如何解决 PHP CURL 中的“SSL CA 证书问题”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn