Ubuntu 16系统LetsEncrypt R3证书过期导致应用无法使用故障求助
问题根因
该问题由Let's Encrypt旧的DST Root CA X3根证书过期、以及旧版R3中间证书到期触发:Ubuntu 16.04默认的证书生成规则会优先使用交叉签名到旧DST根的证书链,同时系统内置根证书存储未更新的情况下,即使重新签发证书也会携带过期的中间/根证书引用,导致校验失败。
修复操作步骤
- 检查当前证书链结构,确认是否存在过期证书
openssl crl2pkcs7 -nocrl -certfile /etc/letsencrypt/live/xxxxxx.xx.xx/fullchain.pem | openssl pkcs7 -print_certs -noout
正常有效链输出顺序应为:你的域名证书 → R3中间证书 → ISRG Root X1根证书,不能包含过期的DST Root CA X3或者旧版过期R3证书。
- 强制重新签发证书,指定使用ISRG根证书的纯有效链
certbot renew --force-renewal --preferred-chain "ISRG Root X1"
- 更新Ubuntu 16.04本地根证书存储,清除过期根证书记录
apt update && apt install --only-upgrade ca-certificates update-ca-certificates
- 重启对应的Web服务或应用服务,确保加载新生成的证书文件:
如Nginx服务执行systemctl restart nginx,Apache服务执行systemctl restart apache2,自有应用直接重启对应进程即可。 - 验证修复结果,执行本地校验命令:
openssl s_client -connect xxxxxx.xx.xx:443 -servername xxxxxx.xx.xx
返回结果中Verify return code显示为0 (ok)即为校验正常,问题修复。
内容的提问来源于stack exchange,提问作者Lewis
相关产品推荐
相关产品推荐

