过去,用 HTTPS 意味着又贵又麻烦的证书。Let's Encrypt 改变了这一点:它是免费的,而且从签发到续期都可以完全自动化。下面从防御者的视角讲解它的工作原理。
工作原理:自动证明域名控制权(ACME)
传统证书意味着提交申请、递交身份材料、然后等待——全靠人工。Let's Encrypt 用 **ACME(Automatic Certificate Management Environment,自动证书管理环境)**取代了这一切,这套协议把整个交互过程变成机器对机器的步骤。
关键在于:它只验证对域名的控制权(域名验证,DV),并不审核企业的法律存在,正因如此整个流程才够轻量、可以完全自动化。而加密本身丝毫不比付费证书弱。
90 天有效期,是因为续期本就应该自动进行
Let's Encrypt 证书的有效期为 90 天。这个短窗口是刻意为之的。
限制密钥泄露造成的损害
万一服务器的私钥泄露,短有效期证书就缩短了它可被滥用的期间——即便吊销有所延迟,它也会自行过期。
让自动续期成为默认
90 天用手工续期并不现实,因此运维人员不得不自动化——这把整个行业推向了「证书是要自动轮换的东西」这一观念。实践中,续期工具会在到期前约 30 天开始尝试。
所以真正的工作是监控
自动续期可能会在无人察觉的情况下停掉:cron 坏了、权限变了、域名校验不再通过。如果你没察觉,90 天后它就过期了。防御性的习惯是监控续期是否成功以及剩余天数。
本站之见:我们自己就这么用(自动 TLS)
本站运行在 Caddy 这款 Web 服务器上,它只要把域名指向它,就会自动签发并续期 Let's Encrypt 证书(几乎没有任何证书配置)。「不必再为证书操心」正是目标所在:人工经手的地方越少,因忘记更换而导致的过期事故就越少。
反之,如果你用 cron 运行 certbot,稳妥的做法是去监控那个 cron 是否真的还在运行,而不是想当然地相信它在运行。
有效期正在缩短(截至 2026 年 10 月的时间表)
如今的标准是 90 天,但 Let's Encrypt 已宣布将分阶段缩短有效期。由浏览器厂商和证书颁发机构组成的行业组织 CA/Browser Forum 也已决定,从 2026 年 3 月起分阶段缩短浏览器信任的证书的最长有效期,到 2029 年 3 月缩短至 47 天。
| 时间 | 变化 |
|---|---|
| 截至 2026 年 10 月 | 有效期 90 天 |
| 2026 年 5 月 13 日起 | 可选用的 tlsserver 配置文件提供 45 天证书 |
| 2027 年 2 月 10 日起 | 默认(classic 配置文件)改为 64 天;域名验证结果的复用期缩短为 10 天 |
| 2028 年 2 月 16 日起 | 默认改为 45 天;域名验证结果的复用期缩短为 7 小时 |
有效期约六天(160 小时)的 shortlived 配置文件也已于 2026 年 1 月正式提供。IP 地址证书只以这种短期证书的形式签发。
实务上的要点:不要把续期间隔写死成「每 60 天」之类。Let's Encrypt 推荐使用支持 ARI(ACME Renewal Information,由 CA 告诉客户端何时续期)的客户端;没有 ARI 时,在有效期过去三分之二时续期。按固定天数运行的 cron 任务,一旦有效期缩短就会开始导致过期。
2025 年结束的服务:OCSP 和到期提醒邮件
Let's Encrypt 在 2025 年停止了两项服务。如果你参照的是较早的文章或配置,请留意。
- OCSP(每次检查证书是否已被吊销):2025 年 5 月 7 日从证书中移除了 OCSP URL,8 月 6 日关闭了响应服务器。吊销检查现在依靠 CRL(已吊销证书的列表)。原因之一是隐私:使用 OCSP 时,CA 可以得知哪个 IP 地址在访问哪个网站。
- 到期提醒邮件:于 2025 年 6 月 4 日停止。以前临近到期时会收到邮件,现在不会了。你需要自己监控到期情况。
头号事故:续期中断,随后过期
HTTPS 上最常见的问题并不是攻击,而是证书过期。一旦过期,浏览器会弹出整页警告,访客几乎都会离开。原因几乎总是「续期自动化坏掉了,却没人察觉」。
正因如此,你应该有一种办法来定期查看自己证书的有效期。本站的网站安全审计会在你已验证归属的网站上检查 TLS 证书(剩余天数、到期时间、过时的协议),与其他检查项一并进行。先把续期自动化,再从外部验证这套自动化是否仍在运行。两个习惯结合起来,几乎能完全杜绝过期事故。
域名验证方式(挑战)的比较
ACME 提供三种证明域名控制权的方式。选择适合你环境的那一种。
| 方式 | 放置什么 | 通配符证书 | 适合的场景 |
|---|---|---|---|
| HTTP-01 | 在 Web 服务器的固定路径下放置一个文件 | 不可以 | 可通过 80 端口访问的普通 Web 服务器 |
| DNS-01 | DNS 中的一条 TXT 记录 | 可以 | 需要 *.example.com,或服务器无法从外部访问 |
| TLS-ALPN-01 | 在 443 端口的 TLS 连接上作出响应 | 不可以 | 大型托管服务商和反向代理 |
把 DNS-01 自动化,意味着要在服务器上保存 DNS 的 API 密钥。一旦该密钥泄露,他人就能修改你域名的记录,所以要选择能把密钥权限限定于 TXT 记录的 DNS 服务商,并尽量减少存放密钥的地方。
如何检查自己的网站
在浏览器中查看颁发者和到期日期
确认续期真的在运行
certbot certificates 显示到期日期,certbot renew --dry-run 测试续期。在 systemd 主机上,确认 systemctl list-timers 中出现了 certbot 的定时器。Caddy 会在日志中记录证书的签发和续期。查找不是你申请的证书
限制可以为你签发证书的 CA
从外部监控剩余天数
案例:2021 年的根证书到期
证书通过一条以受信任的根证书为终点的链来验证。Let's Encrypt 的证书最初是通过另一家 CA 的根证书(DST Root CA X3)获得信任的,而这个根证书于 2021 年 9 月 30 日到期。
从那天起,不信任 Let's Encrypt 自己的根证书(ISRG Root X1)的旧设备和旧软件,在使用 Let's Encrypt 的网站上开始显示证书警告(较旧的 Android 设备由于一项特殊安排仍可正常使用)。网站的证书本身已正确续期,但使用旧设备的用户却无法再连接。
如果你运营着有旧设备连接的 API 或系统,请关注 Let's Encrypt 的公告,为中间证书和根证书的变更做好准备。Let's Encrypt 建议不要在配置中写死中间证书,而是使用 ACME 客户端收到的证书链。
接下来阅读
- 从事故中学习:Heartbleed(一个让大量服务器的私钥面临风险的 TLS/OpenSSL 漏洞)
- 检查你自己的网站:网站安全审计(TLS 证书、响应头、暴露文件,一份报告搞定)
- 基础:面向独立开发者的安全基线清单
出处(一手资料)
- Let's Encrypt 官方博客(2025 年 12 月 2 日,将有效期缩短至 45 天的计划) — letsencrypt.org(改为 64 天和 45 天的日期、验证结果的复用期、推荐 ARI)
- Let's Encrypt 官方博客(2026 年 1 月 15 日,六天证书和 IP 地址证书正式提供) — letsencrypt.org
- Let's Encrypt 官方博客(2024 年 12 月 5 日,结束 OCSP) — letsencrypt.org(移除 OCSP URL 和关闭响应服务器的日期)
- Let's Encrypt 官方博客(2025 年 1 月 22 日,结束到期提醒邮件) — letsencrypt.org
- Let's Encrypt,“Challenge Types” — letsencrypt.org
- Let's Encrypt,“Integration Guide” — letsencrypt.org(续期时机、不要写死中间证书)
- Let's Encrypt,“DST Root CA X3 Expiration (September 2021)” — letsencrypt.org
- CA/Browser Forum,“Ballot SC081v3”(2025 年 4 月 11 日通过) — cabforum.org(公开证书的最长有效期于 2029 年 3 月缩短至 47 天)