Let's Encrypt
Let's Encrypt 关闭 OCSP 服务,吊销信息改走 CRL
2025 年 8 月 6 日,Let's Encrypt 关闭了 OCSP 响应服务,全球签发量最大的 CA 从此不再提供证书状态的实时查询。吊销信息改为只通过证书吊销列表(CRL)发布,CRL 的地址写在每张证书里。这是 2024 年 12 月 5 日公布的计划的最后一步。
发生了什么
Let's Encrypt 放弃 OCSP 的主要理由是隐私:每次查询都等于告诉 CA“某个用户正在访问某个网站”。OCSP 的工作方式是客户端拿着某张证书去问 CA“这张证书有没有被吊销”。CA/B 论坛的 SC-063 投票自 2024 年 3 月 15 日起把 OCSP 改为可选、把 CRL 改为必备,这为 Let's Encrypt 彻底放弃 OCSP 扫清了规则上的障碍。
具体时间线:
- 2024-12-05:公布计划。
- 2025-01-30:拒绝新的 OCSP Must-Staple 订单,此前签发过 Must-Staple 证书的账户暂时除外。
- 2025-05-07 之前:证书中加入 CRL 分发点地址。
- 2025-05-07:新证书不再包含 OCSP 地址,所有 Must-Staple 订单一律拒绝。
- 2025-08-06:关闭 OCSP 响应服务。
Let's Encrypt 证书有效期是 90 天,所以 5 月 7 日前最后一批带 OCSP 地址的证书,在 OCSP 服务关闭时已经全部过期,不存在“证书里写着 OCSP 地址却查不到”的情况。
影响谁
主流浏览器基本不受影响,受影响的是仍在用 OCSP 的服务器和客户端:
- 开启了 OCSP 装订的服务器。 证书里没有 OCSP 地址后,nginx 会在日志里报类似
"ssl_stapling" ignored, no OCSP responder URL in the certificate的警告并跳过装订。网站照常访问,但这段配置已经没有作用。宝塔面板等工具生成的 nginx 配置里如果带有ssl_stapling,也是同样的情况。 - 使用 Must-Staple 的用户。 Let's Encrypt 不再签发带 Must-Staple 扩展的证书,配置了该选项的 ACME 客户端会申请失败,必须先去掉这个选项。
- 强制要求 OCSP 应答的客户端。 一些自研软件、企业代理设备或嵌入式设备如果拿不到 OCSP 应答就直接拒绝连接,需要改为检查 CRL,或者不再强制在线查询。
浏览器不依赖 Let's Encrypt 的 OCSP 服务:Chrome 使用自己的 CRLSet,Firefox 也在转向 CRLite,大多数证书本来就不走 OCSP 实时查询。
需要做什么
去掉对 Let's Encrypt 证书已经无效的 OCSP 装订和 Must-Staple 配置。先检查证书里是否还有 OCSP 地址,以及 CRL 地址在哪:
openssl x509 -in cert.pem -noout -ocsp_uri
openssl x509 -in cert.pem -noout -ext crlDistributionPoints
对当前的 Let's Encrypt 证书来说,第一条命令输出为空是正常的。只用 Let's Encrypt 证书的 nginx,可以删掉装订相关配置:
# 对 Let's Encrypt 证书已无作用
# ssl_stapling on;
# ssl_stapling_verify on;
用 certbot 的,去掉命令里的 --must-staple,并删除 /etc/letsencrypt/renewal/ 下配置文件中的 must_staple = True,然后演练一次续期:
sudo certbot renew --dry-run
OCSP 与 CRL 指南介绍了现在的吊销检查是怎么工作的。这次变化和停发到期提醒邮件一起收录在 Let's Encrypt 时间线中。
常见问题
关闭 OCSP 后,被吊销的证书还能被发现吗?
可以。吊销信息发布在 CRL 中,每张证书的 CRL 分发点扩展里都写有 CRL 地址。浏览器还会使用自己汇总的吊销数据。
nginx 里的 ssl_stapling 还要开着吗?
对 Let's Encrypt 证书没有意义了。证书里已经没有 OCSP 地址,nginx 无从装订,只会在日志里报警告。只有仍在提供 OCSP 的 CA 签发的证书才需要保留这项配置。
Let's Encrypt 什么时候从证书里去掉了 OCSP 地址?
2025 年 5 月 7 日。此后签发的证书不再包含 OCSP 地址,OCSP 响应服务本身在 2025 年 8 月 6 日关闭。