项目使用guzzleHttp做的一个接口,报错:certificate has expired

因为在linux centos环境与window环境有所不同,在此记录一下解决过程。

 

目录

报错提示

原因

解决方式

1.去掉guzzlehttp的验证

2.更新CA证书

总结


报错提示

cURL error 60: SSL certificate problem: certificate has expired (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://api.openai.com/v1/completions

原因

GuzzleHttp 使用http协议时,因为Let’s Encrypt 证书停止了HTTP API的请求支持,所以到期没有办法升级,证书过期验证不通过。

解决方式

 

1.去掉guzzlehttp的验证

new Client([
    'verify' =>false
]);

 

2.更新CA证书

从网站下载最新证书,并上传到原ca证书位置

下载证书

https://curl.haxx.se/ca/cacert.pem

 

查看证书位置

curl-config --ca

 

上传证书

使用sftp上传到/etc/pki/tls/certs/文件夹下

修改软连接

通过ll命令查看,可以发现证书有建立软连接

使用ln -sf强行创建软连接,若存在则覆盖原来的软连接

ln -sf cacert.pem /etc/pki/tls/certs/ca-bundle.crt

 

总结

建立软连接后,如果觉得不保险可以重启一下php-fpm,之后问题应该就解决了。相比于window中直接把文件下载后,直接修改php.ini,微微复杂了一点;linux中修改配置并不好使。

借鉴文章:https://www.cnblogs.com/xuduan/p/15380306.html

 

Logo

更多推荐