代码访问使用Let's Encrypt证书的网站提示certificate has expired的解决方法

2021年9月30日有点不一般,大名鼎鼎的Let's Encrypt曾经签发的所有SSL证书使用的根证书DST Root CA X3都会到期,如下图。

Let's Encrypt最新签发的SSL证书已经把DST Root CA X3换成了另外一个距离到期时间还长着的ISRG Root X1,但是注意:您的服务器上的Openssl低于1.1版本,还是会报 certificate has expired 的错误,因为Openssl旧的版本它会优先使用长度更短的“DST Root CA X3”与HTTPS网站做验证交换,一旦验证失效,就会报错终止,后续不再尝试用新的根证书“ISRG Root X1”做验证。OpenSSL 1.1.X 已修复该 Bug。

根源找到了,下面开始解决。思路就是移除DST Root CA X3根证书或升级Openssl至最新版本。

Ubuntu 解决方法:

apt-get update
apt-get install openssl -y

Debian 解决方法:

1、修改“/etc/ca-certificates.conf” 删除“mozilla/DST_Root_CA_X3.crt”  

如:sed -i 's/mozilla/DST_Root_CA_X3.crt//g'  /etc/ca-certificates.conf
2、删除“/etc/ssl/certs/”中的DST_Root_CA_X3.pem
3、执行:update-ca-certificates

CentOS解决方法:

rm /etc/ca-certificates/trust-source/DST_Root_CA_X3.pem
update-ca-trust
原文地址:https://www.cnblogs.com/Don/p/15397625.html