先看现象。早上用户反馈网站打不开,提示证书日期无效,检查发现证书三天前就到期了,续期任务一直没有成功执行。
这类报错背后常见的原因有几处,逐个排除就行。自动续期任务失败但没有告警。还有一种是证书文件被替换后服务没有重载。
还有一种情况,系统时间偏差导致校验提前失败。
上来先看证书实际有效期
openssl x509 -in /etc/nginx/cert.pem -noout -dates
再往下确认系统时间是否准确
date && timedatectl status
然后重新签发并部署证书
certbot renew --force-renewal
剩下的就是重载服务加载新证书
nginx -t && nginx -s reload
中间停过一次,把已经改的东西回滚干净,再重新来一遍。
同样的操作我在测试机上先走了一遍,线上只做验证过的部分。
怎么算真的好了,看的是同一批现象。浏览器不再报证书错误,证书有效期显示为新的到期时间,线上访问正常。
续期成功但没重载等于没换;到期前要留出告警,最好提前一个月就开始盯续期结果。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。