Categories: PHP业界编程

PHP cURL: Fixing the “SSL certificate problem: unable to get local issuer certificate” error.

如果你使用PHP的cURL函数来请求一个HTTPS URL,你可能会遇到以下错误:

SSL证书问题:无法获得本地颁发者证书。(cURL error code 60)

当您试图使用PHP的cURL函数请求到HTTPS网站时,这是一个常见的错误。实际上,您的cURL客户端还没有配置启用ssl去请求URL网站。

快速修复。

如果您不关心安全性,并且正在寻找快速解决方案,那么您可以简单地禁用以下cURL选项:

  • CURLOPT\u SSL\u VERIFYHOST:这个选项告诉cURL它必须验证服务器证书中的主机名。
  • CURLOPT\u SSL\u VERIFYPEER:这个选项告诉cURL验证服务器上SSL证书的真实性。

禁用这两个选项将禁用SSL验证。
要禁用这两个选项,可以使用curl\u setopt函数,如下所示:

//The URL we are connecting to.
$url = 'https://google.com';

//Initiate cURL.
$ch = curl_init($url);

//Disable CURLOPT_SSL_VERIFYHOST and CURLOPT_SSL_VERIFYPEER by
//setting them to false.
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

//Execute the request.
curl_exec($ch);

//Check for errors.
if(curl_errno($ch)){
    throw new Exception(curl_error($ch));
}

上面的代码本质上告诉cURL,我们不关心服务器是否具有有效的SSL证书。我们无论如何都想连接到它。
这个方法的问题是它不安全,而且会让你受到中间人攻击。简单地说,这意味着攻击者可能会截获您在cURL请求中发送的数据。

在PHP的cURL函数中使用cert

要将证书与PHP的cURL函数一起使用,可以从官方网站下载cacert.pem公司证书, 一旦你下载了cacert.pem公司文件,您应该将其移动到对您和您的设置最有意义的目录。在Windows上,我把包移到了C:\wamp\cacert.pem公司
然后,您可以使用cURL\u setopt函数简单地告诉cURL您的证书包位于何处:

//Tell cURL where our certificate bundle is located.
$certificate = "C:\wamp\cacert.pem";
curl_setopt($ch, CURLOPT_CAINFO, $certificate);
curl_setopt($ch, CURLOPT_CAPATH, $certificate);

这允许我们向服务器发出安全请求,并防止任何中间人攻击。

将证书添加到php.ini文件文件。

如果您不喜欢在PHP代码中指定证书包的位置,那么可以将其路径信息添加到php.ini文件:

curl.cainfo="C:\wamp\cacert.pem" 
openssl.cafile="C:\wamp\cacert.pem"

一旦你把上面的行添加到你的php.ini文件文件中,请确保重新启动web服务器/PHP进程,以便更改生效。

5.0
01
用PHP的filter_var函数验证IP地址
包含所有基本功能的最小bash脚本范例
嘻嘻

嘻嘻IT: 笔者是一个工作七八年的程序猿老鸟,从事涉及的技术栈主要包括PHP、Linux、Devops等,喜欢研究新技术,尝试新技术,提升技术自动化和开发效率,致力于write less,do more! 技术每年都会层出不穷,领域划分的越来越细,不可能学习所有的东西,保持对技术的好奇心,理解技术中核心思想,做一个有深度,有思想的开发!

Recent Posts

如何在Linux中根据修改日期和时间查找和排序文件

习惯于使用图形用户界面的人可以…

15小时 ago

Golang中如何实现PHP中array_fill函数?

PHP中的array_fill…

16小时 ago

Dify是一个开源的LLM应用程序开发平台(25.8k stars)

Dify是一个开源的LLM应用…

19小时 ago

MyIP一款开源好用IP工具箱(4.6k stars)

MyIP一款开源好用IP工具箱…

2天 ago

asciinema一款优秀终端会话录制工具(13.2k stars)

asciinema是一个优秀的…

3天 ago