项目使用guzzleHttp做的一个接口,报错:certificate has expired
因为在linux centos环境与window环境有所不同,在此记录一下解决过程。
目录
报错提示
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