本文目录导读:

- 第一时间确认证书过期范围
- 紧急处理:立即申请新证书
- 关键步骤:验证域名所有权
- 替换旧证书并重启服务
- 设置自动化监控与预警(防止再次发生)
- 事后检查清单(新证书生效后)
- 快速急救(如果无法立即更换且业务不可中断)
- 最佳实践
证书过期问题确实需要及时处理,否则会影响网站、服务或应用的正常访问,以下是及时更换证书的详细步骤和建议:
第一时间确认证书过期范围
在更换前,先快速确认以下信息,避免遗漏或误操作:
- 所有受影响的域名/服务:例如主站、API、子域名、邮件服务等。
- 证书类型:是SSL/TLS证书(如通配符、单域名)、客户端证书还是内部使用的自签名证书。
- 签发机构/运维方式:是云服务商(如阿里云、AWS证书管理器)、Let's Encrypt自动续签,还是自建CA。
紧急处理:立即申请新证书
不要等待自动续签,哪怕它已经失败,直接进入申请流程:
- 如果是云服务商/商业CA:登录控制台,找到对应域名,点击“重新申请”或“续费”,通常几分钟内就能签发。
- 如果是Let's Encrypt:手动运行
certbot renew命令,如果之前配置自动续签但失败了,可以先检查日志(/var/log/letsencrypt/letsencrypt.log)定位问题(如端口被占、DNS验证失败),然后强制续签:certbot renew --force-renewal。 - 如果是自签名证书:生成新密钥对并签署证书,然后立即分发。
关键步骤:验证域名所有权
申请新证书时,需要证明你拥有该域名。请确保验证方式当前仍可用:
- DNS验证:检查域名解析是否还能添加/修改TXT记录,如果域名DNS托管方已更换或权限失效,需立刻修复。
- HTTP验证:检查网站根目录或指定路径是否可写入,如果服务器文件被误删或权限错误,需立刻修复。
- 邮件验证:确保证书申请邮箱(如admin@yourdomain.com)能收信。
替换旧证书并重启服务
拿到新证书后,立即替换所有相关位置:
- Web服务器:Nginx、Apache、IIS等,替换后务必执行配置测试(如
nginx -t)并重载服务(systemctl reload nginx或nginx -s reload)。 - 云负载均衡/CDN:在控制台上传或关联新证书,注意有些服务(如阿里云SLB)需要手动选择新证书。
- 应用服务器:如Tomcat、Jetty、Node.js(依赖环境变量)、Kubernetes Ingress等,替换后重启Pod或服务。
- 内部服务:如果证书用于JWT签名、加密通信,则需更新所有引用该证书的客户端、配置文件。
设置自动化监控与预警(防止再次发生)
这是最关键的一步,不要依赖记忆或手动检查:
- 监控工具:使用免费工具(如UptimeRobot、CheckSSL)或脚本定期检查证书剩余天,推荐Crontab脚本:
# 每天检查,提前30天预警 openssl s_client -connect example.com:443 < /dev/null 2>/dev/null | openssl x509 -noout -dates
(也可以直接使用
certbot renew --dry-run测试自动续签流程) - 自动续签配置:
- Let's Encrypt:确保
certbot renew定时任务(如/etc/cron.d/certbot)工作正常,且80/443端口未被防火墙或反向代理阻挡。 - 商业证书:开启云服务商提供的自动部署功能(如阿里云CDN证书自动更新)。
- Let's Encrypt:确保
- 提前预警:设置日历提醒,提前30天、15天、7天、3天、1天分别提醒。建议将证书续费与公司运营日历绑定(例如每个季度最后一天检查)。
事后检查清单(新证书生效后)
- HTTPS访问:用浏览器或
curl -vI https://www.example.com检查新证书是否被浏览器信任、是否提示安全。 - :检查页面是否加载了仍使用旧证书的资源(如图片、JS、API调用)。
- 内部服务:如果证书用于API认证或双向TLS,确保客户端证书链已更新。
- 日志确认:查看服务日志确认证书加载成功(如Nginx的
error.log中无相关报错)。
快速急救(如果无法立即更换且业务不可中断)
如果证书已过期且无法立刻申请新证书(如CA系统故障):
- 临时降级:让用户通过HTTP访问(极不推荐,会触发浏览器安全警告)。
- 使用备用证书:如果存在备份的证书(如申请了多个备用),立刻替换。
- 联系CA紧急支持:商业CA通常有紧急签发通道(如电话联系,说明情况可加速)。
最佳实践
- 永远不要手动续签:除非是唯一一次。
- 使用ACME协议自动续签(如Let's Encrypt、ZeroSSL)。
- 定期模拟故障:每个月运行一次
certbot renew --dry-run确保流程正常。 - 证书更换清单化:制作一个简单文档,列出所有涉及证书的服务器、端口、配置文件路径,每次续签后核对。
如果以上步骤中遇到具体障碍(例如DNS验证失败、负载均衡器不会更新、旧证书无法访问),可以补充具体技术栈(如Nginx + 阿里云SLB),我可以提供更针对性的解决方案。