天行健,君子以自强不息;地势坤,君子以厚德载物;

Curl请求HTTPS证书过期问题解决

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

 

很明显,提示证书过期时,由于已经本地测试过几乎可以排除服务端证书过期的问题,那么很明显是服务器环境的问题

可以用  curl -k -I -v 查看服务端证书信息

基本可以确定是服务器本地的证书过旧,需要下载最新的【http://curl.haxx.se/ca/cacert.pem 】,以下提供本地mac环境和服务器centos环境下的解决过程

mac

curl-config --ca  //尝试获取证书位置,但是我这边返回了空,问题不大,继续curl -v看下具体信息
curl http://xxx -v //查看报错原因,得知mac下读取的证书文件位置是在[/etc/ssl/cert.pem ]
ls  -l /etc/ssl/cert.pem
-rw-r--r-- 1  /etc/ssl/cert.pem  //这里直接是个文件,权限是644
cp /etc/ssl/cert.pem /etc/ssl/cert.bak.pem //备份原文件
curl -o ./cacert.pem "http://curl.haxx.se/ca/cacert.pem"  -L -v //下载最新的证书。-L是为了跟踪重定向,-v是为了查看具体信息
cp ./cacert.pem /etc/ssl/cert.pem  //替换原文件,到此完成

centos

curl-config --ca  //尝试获取证书位置,得知centos下读取的证书文件位置是在[/etc/pki/tls/certs/ca-bundle.crt]
ll /etc/pki/tls/certs/ca-bundle.crt
lrwxrwxrwx 1 root root /etc/pki/tls/certs/ca-bundle.crt -> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem //这里是个软连接,权限是777
mv /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-bundle.bak.crt  //备份原文件
curl -o ./cacert.pem "http://curl.haxx.se/ca/cacert.pem"  -L -v //下载最新的证书。-L是为了跟踪重定向,-v是为了查看具体信息
cp ~/cacert.pem /etc/pki/ca-trust/extracted/pem/20211008-ca-bundle.pem //先存放到这个目录下
ln -s  /etc/pki/ca-trust/extracted/pem/20211008-ca-bundle.pem /etc/pki/tls/certs/ca-bundle.crt //和原文件一样,创建软连接,到此完成
php配置的修改方式:
vi php.ini
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
; 改为新下载ca的文件
curl.cainfo = /etc/pki/tls/certs/ca-bundle.crt
WordPress的修改方式:
用新下载的CA文件替换 wp-includes/certificates/ca-bundle.crt 即可
点赞

发表回复