php 出现 SSL certificate problem: unable to get local issuer certificate 的解决办法
在 PHP 中使用 cURL 或其他网络操作时,可能会遇到一个常见的 SSL 证书问题,错误信息为“SSL certificate problem: unable to get local issuer certificate”。这是因为 PHP 试图验证 SSL 证书,但是无法找到用来验证这些证书的 CA(证书颁发机构)证书。解决此问题的主要方法是提供一个 CA 证书包,让 PHP 可以使用。以下是解决这个问题的步骤:
下载 CA 证书包:首先,你需要一个 CA 证书包。Mozilla 提供了一个广泛接受的 CA 证书包,你可以在这个链接中找到:https://curl.haxx.se/ca/cacert.pem。将这个文件下载到你的服务器上,选择一个安全且可以由 PHP 访问的位置。
更新 php.ini 文件:找到你的 php.ini 文件,这是 PHP 的主要配置文件。你可以通过 phpinfo()函数找到这个文件的位置。在这个文件中,你需要设置或更新以下两个配置项:
curl.cainfo = "path/to/downloaded/cacert.pem"
openssl.cafile = "path/to/downloaded/cacert.pem"
这里的"path/to/downloaded/cacert.pem"应该是你在第一步中下载的 cacert.pem 文件的绝对路径。这告诉 PHP 在哪里找到 CA 证书包。
重启你的 web 服务器:为了让 php.ini 的更改生效,你需要重启你的 web 服务器。如果你使用的是 Apache,你可以使用
service apache2 restart
(Ubuntu/Debian)或service httpd restart
(CentOS/RHEL)。如果你使用的是 Nginx,你可以使用service nginx restart
。
以上步骤应该可以解决“SSL certificate problem: unable to get local issuer certificate”这个问题。然而,在某些情况下,你可能无法修改 php.ini 文件,或者你只想为特定的 cURL 请求跳过 SSL 证书验证。在这种情况下,你可以在你的 cURL 选项中设置 CURLOPT_SSL_VERIFYPEER 和 CURLOPT_SSL_VERIFYHOST 为 false,如下:
请注意,这会使你的 cURL 请求对所有 SSL 证书都信任,包括那些可能是伪造的证书。因此,除非你确定你的请求是安全的,否则不应该使用这种方法。
总结,SSL 证书问题在 PHP 中是常见的,但是通过正确的配置和使用 CA 证书包,可以轻松解决这个问题。在处理 SSL 证书时,应始终确保你的操作是安全的,以防止可能的安全威胁。
蓝易云-五网CN2服务器【点我购买】蓝易云采用KVM高性能架构,稳定可靠,安全无忧!蓝易云服务器真实CN2回国线路,不伪造,只做高质量海外服务器。
海外免备案云服务器链接:www.tsyvps.com
蓝易云香港五网 CN2 GIA/GT 精品网络服务器。拒绝绕路,拒绝不稳定。
版权声明: 本文为 InfoQ 作者【百度搜索:蓝易云】的原创文章。
原文链接:【http://xie.infoq.cn/article/b203d8d983bbfcabe827d555f】。文章转载请联系作者。
评论