安全

Let's Encrypt 自动化:别只拿到第一张证书

证书有效期会变短。真正要验证的不是首次签发,而是续期、reload、DNS 权限和告警都可靠。

Let's Encrypt 最容易的是拿到第一张证书。真正让网站保持在线的是续期自动化。一套证书自动化至少要证明四件事:验证能通过,新证书能落到正确位置,Web 服务能 reload,任何一步失败都有人在过期前知道。

按拓扑选 challenge

Challenge适合场景主要限制
HTTP-01简单公开 Web 服务器需要 80 端口,不能签通配符
DNS-01通配符证书或复杂路由需要 DNS API 自动化和严格 token 权限
TLS-ALPN-01443 端口上的 TLS 自动化普通主机环境里较少使用
Let's Encrypt 建议不确定时使用客户端默认值或 HTTP-01,但实际选择取决于网络结构。

更短有效期会减少容错

Let's Encrypt 已公告证书会分阶段从 90 天缩短到 45 天。官方文章也提醒,当使用 45 天证书时,硬编码 60 天续期间隔将不再足够。续期逻辑应跟随 ACME 客户端和 CA 信号,而不是多年前写死的日历习惯。

能抓住真实失败的续期检查

  1. 每次改证书自动化后,跑 staging 或 dry-run 续期。
  2. 确认 Web 服务 reload 没有语法错误。
  3. 实际续期时确认线上证书已变化。
  4. 在过期前 30 天、14 天、7 天告警。
  5. DNS API token 最小权限,人员或系统变化时及时轮换。

Rate limit 是设计信号

Let's Encrypt 的 rate limit 对正常续期通常足够,对坏掉的循环脚本会很痛。如果在测试自动化,先用 staging 环境。如果脚本反复建账号或反复申请证书,rate limit 正在提醒你这套自动化还不适合生产。

小站点默认做法

单台 VM 上跑 Nginx 或 Caddy,可以使用 Web 服务官方 ACME 流程,或使用会安装 timer 的 Certbot 包。通配符证书优先使用 DNS plugin,并把 token 权限压到最小。除非临时项目,不建议长期使用手动证书。

资料来源

  1. Let's Encrypt challenge typesHTTP-01、DNS-01、TLS-ALPN-01 行为。
  2. Let's Encrypt rate limitsToken bucket 限制和 staging 建议。
  3. Let's Encrypt getting startedACME 和 Certbot 指南。
  4. Let's Encrypt FAQ90 天 DV 证书和续期建议。
  5. Let's Encrypt 90-to-45 day announcement证书有效期缩短时间线。
  6. Certbot instructions续期 timer 和 dry-run 做法。