cURL error 60: SSL certificate problem: certificate has expired

588次阅读
2 条评论

共计 590 个字符,预计需要花费 2 分钟才能阅读完成。

开发时候,突然遇到一直好好的一个服务无法获取数据,本地测试怎么都正常,经过逐一排查之后,发现是系统报了这个错误:

curl: (60) SSL certificate problem: certificate has expired

检查一下域名的 SSL 证书也没问题,访问都正常,并没有到期。

后来是发现本地的 CA 证书过期,Curl 请求调用时候就直接嗝屁了,线上只返回个 false 就很迷惑,下面来给解决办法:

有两个办法,如果你是 laravel 的引用,可以直接加一个参数即可:

$response = Http::withOptions([
    'verify' => false,
])->get('http://example.com/users');

但是这种方法,每个请求都要添加参数,并不优雅,此时可以对 CA 证书进行替换:

下载地址:curl – Extract CA Certs from Mozilla

下载之后,打开 PHP 的配置文件,php.ini

搜索:curl 配置,找到 curl.cainfo 配置项

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = /etc/pki/tls/certs/ca-bundle.crt

【宝塔路径如上,其他环境请按照具体路径查找】

将下载的新证书内容替换即可。

正文完
加入官方交流QQ群:778957856
post-qrcode
 0
clark
版权声明:本站原创文章,由 clark 2023-02-21发表,共计590字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(2 条评论)
明月博客导航 评论达人 LV.1
2023-02-26 19:42:33 回复

路过,踩一下! :razz:

 Windows  Edge
    clark 博主
    2023-02-26 21:12:29 回复

    友链已加 :)

     Macintosh  Edge