## 症状现象
用户反馈网站打不开,浏览器地址栏红锁加警告,提示证书已过期。你自己访问同样被拦截。看一眼证书详情,有效期截止日期就是昨天或今天。证书过期后多数浏览器直接拦截页面,普通用户不会点"继续访问",流量等于停摆,这是必须按紧急事件处理的问题。移动端浏览器表现更极端,直接拒绝展示内容,用户流失得更隐蔽。
## 紧急处理:先恢复访问
第一优先是恢复,不是找原因。免费证书场景立刻手动续期:acme.sh 一条命令重新签发并部署,之前配置过 install-cert 的话连 reload 都自动完成:
bash acme.sh --renew -d example.com --force
商业证书场景登录证书服务商重新签发部署,流程较长,期间可临时启用一张免费证书顶上,先恢复加密访问。部署后用 openssl 查有效期确认换新:
bash openssl s_client -connect 127.0.0.1:443 2>/dev/null | openssl x509 -noout -dates
多节点环境注意逐台确认,漏一台就还有用户被拦。证书链不完整的部署在续期后也偶发异常,部署完用在线检测工具查一遍链路。
## 定位:为什么自动续期没兜住
恢复后回答关键问题:为什么续期没跑。常见四类:自动续期任务根本没配,第一次签发是手动的;任务在跑但静默失败,webroot 路径变了、80 端口被防火墙收回、acme 账号过期;证书不是 acme 管理的,部署脚本改过文件导致续期与部署脱节;机器迁移后任务没跟过去。翻续期日志与 crontab,几类原因都能对上号。
## 预防:双保险
第一道保险是可靠的自动续期:install-cert 部署钩子、每日检查任务、失败通知,三件配齐。第二道保险是独立于续期机制的过期监控:证书剩余三十天、七天两级告警,监控与续期必须是两套系统,全部押在续期脚本上就等于没有兜底。顺云控制台的监控告警可以配合外部探测一起用,证书这类"突然死亡"的资产,冗余监控是唯一稳妥的答案。多域名多证书的环境列一张清单统一管理,散落各机的证书是最大的盲区。