复盘:SSL 证书到期、自动续期却静默失败踩的坑

孙

孙SRE

· 阅读 1533

分享

分享一次证书过期导致站点不可用的复盘,希望能帮到同样在用自动续期的同学。以下是社区整理的排查与修复过程。

「复盘:SSL 证书到期、自动续期却静默失败踩的坑」提醒我们一个朴素的事实:证书管理与 HTTPS 加固靠的不是临场发挥,而是平时的体系化建设。告警是否准确、日志是否齐全、权限是否收敛,决定了故障来临时是从容处置还是手忙脚乱。

复盘:SSL 证书到期、自动续期却静默失败踩的坑

现象

浏览器报 HTTPS 证书过期,而自动续期任务"看起来一直在跑",证书却始终没更新。

根因

用 acme / Let's Encrypt 的 webroot(http-01)方式验证时,80 端口配置了无条件 301 跳转到 https,导致验证请求 /.well-known/acme-challenge/ 也被重定向,签发方拿不到验证文件,续期失败——而且是"静默失败",直到证书过期才暴露。

排查

看续期日志、手动跑一次续期看具体报错、从外网访问验证路径确认是否可达(有没有被跳转或被防火墙挡住)。

修复

在 80 端口对 /.well-known/acme-challenge/ 放行,其余请求再做 301;确认验证目录权限与 nginx location 的匹配优先级;修复后手动续期成功并 reload。

预防

加"证书剩余天数"监控告警(如低于 20 天告警)、续期失败要能通知到人、定期演练续期流程。

小结:自动续期一定要配到期监控与失败告警,别让"静默失败"演变成"线上事故"。

复盘:SSL 证书到期、自动续期却静默失败踩的坑 复盘:SSL 证书到期、自动续期却静默失败踩的坑

到期监控要有三重保险,续期成功也要验证

自动续期只是把手动操作换成了定时任务,它并没有消除失败的可能。真正稳妥的做法是让「证书快到期」这件事有多个相互独立的发现渠道,并且在续期之后确认证书确实生效了。

  • 外部拨测:用不依赖自身服务器的第三方监控检查证书剩余天数,低于设定阈值就告警。它的好处是即使本机定时任务全部失效,这条渠道依然有效。
  • 内部巡检:定时读取本机实际加载的证书到期时间并上报,与续期日志放在一起看,能快速判断是「没续期」还是「续了但没生效」。
  • 人工台账:把域名、证书类型、续期方式、验证方式、负责人记在一张表里,人员变动时不至于无人知晓,也不会出现某个二级域名被整体遗漏。
  • 续期后验证:确认服务已重载新证书、证书链完整(缺少中间证书会在部分客户端报错)、多域名与泛域名的覆盖范围正确。
  • 链路上的其他节点:如果流量经过 CDN、负载均衡或网关,证书需要在这些节点同步更新,只换源站并不会让访问者看到新证书。

使用文件验证方式时还要记住两个前提:验证路径必须在 80 端口可达且不被重定向,验证目录的写入权限与 Web 服务的路径匹配优先级要正确。这两点配错时续期任务会持续失败,而日志里往往只有一行不起眼的错误,等到浏览器弹出警告才发现就已经太晚了。

一份可执行的日常清单

  • 暴露面盘点:定期梳理对外端口与服务,关闭不必要的开放。
  • 权限最小化:账号与密钥按最小权限分配,定期回收闲置权限。
  • 告警治理:清理长期无人响应的告警,保证留下的告警都值得处理。
  • 预案演练:对高频故障场景准备处置预案并定期演练。

清单不复杂,难在坚持;而证书管理与 HTTPS 加固的差距,恰恰体现在坚持上。

把证书管理与 HTTPS 加固交给更专业的协作方

安徽卓牛为客户提供云上的安全加固、监控体系搭建与运维托管服务,能够结合阿里云安全与可观测产品,帮助团队建立可持续的运维安全体系,而非一次性整改。

若你希望就「复盘:SSL 证书到期、自动续期却静默失败踩的坑」涉及的内容做一次现状评估,可通过官网在线客服联系安徽卓牛,获取针对性建议。

#SSL证书#HTTPS#续期