通过升级PHP的OpenSSL解决CentOS 7下宝塔建站(WordPress、Nextcloud)出现无法建立安全连接、cURL error 60的方法

由于Let’s Encrypt两个根证书之一的DST Root CA X3在2021/9/29到期,加上OpenSSL1.0的BUG,导致出现异常的安全连接建立失败。具体原因分析可以参考https://zhuanlan.zhihu.com/p/417627543

具体到站点上,WordPress表现在更新时提示“WordPress无法建立到WordPress.org的安全连接”

Nextcloud表现在“概览”检查更新以及连接商店时会报错"cURL error 60: SSL certificate problem: certificate has expired"

检查是否能连接时,可以打开“概览”查看是否能检测到更新,“日志”里是否有错误;不推荐打开插件商店,会导致日志被大量写入而无法打开,可以通过后台删除日志清空


在尝试过网上诸多方法更新证书后,后来检查发现,是PHP编译的OpenSSL版本太低导致

为了解决这个问题,首先更新证书链,参考https://www.jibing57.com/2021/10/09/process-expired-let-s-encrypt-ca-in-centos-7/

# 查看更新
yum list updates -q | grep ca-certificates
# 查看更新日志
rpm -qa --changelog ca-certificates | head -n5
# 安装最新更新
yum -y update ca-certificates
# 检查证书是否还存在
trust list | grep -C3 'DST Root CA X3'
grep -i 'DST Root' /etc/pki/tls/certs/ca-bundle.crt

这样操作之后,Bash里使用curl或者wget的SSL连接应该恢复正常。

接下来,需要手动编译安装新版本OpenSSL,参考https://www.bt.cn/bbs/thread-298-1-1.html

openssl version

wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz

tar zxvf openssl-1.1.1l.tar.gz

cd openssl-1.1.1l

./config --prefix=/usr/local/openssl

make && make install

移动至指定位置

mv /usr/bin/openssl /usr/bin/openssl.OFF

mv /usr/include/openssl /usr/include/openssl.OFF

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/openssl/include/openssl /usr/include/openssl

echo "/usr/local/openssl/lib">>/etc/ld.so.conf

ldconfig -v

再检查,发现openssl确实已更新。

但这时phpinfo显示openssl版本依旧是1.0.2,我们需要在宝塔里更新PHP(也可以重新编译安装),之后再查看phpinfo就是高版本了。

至此,PHP的OpenSSL已经升级完毕,站点内通过cURL访问https站点应该恢复正常。

更新可以被检查到,但因为切换了PHP版本,还需要调整设置

Quin_Meow

阿巴阿巴阿巴

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

微信扫一扫,分享到朋友圈

通过升级PHP的OpenSSL解决CentOS 7下宝塔建站(WordPress、Nextcloud)出现无法建立安全连接、cURL error 60的方法
返回顶部

显示

忘记密码?

显示

显示

获取验证码

Close