Let's Encrypt

Let's Encrypt 停发证书到期提醒邮件

作者: · 最后核实 发布

2025 年 6 月 4 日起,Let's Encrypt 不再发送证书到期提醒邮件。过去,如果某张证书快要到期却没有续期,ACME 账户登记的邮箱会收到一封提醒。Let's Encrypt 在 2025 年 1 月 22 日公布了这一决定,建议用户改为依靠自动续期和独立的监控服务。

发生了什么

Let's Encrypt 给出了三条停发理由:绝大多数用户已经实现自动续期;维持这项服务需要花钱;不保存用户邮箱对隐私更有利。提醒邮件原本是续期失败或被遗忘时的最后一道保险,6 月 4 日之后不再发出。

这是推动用户全面自动化的几项变化之一。Let's Encrypt 同年还关闭了 OCSP 服务;证书有效期也在不断缩短,200 天上限已经生效,Let's Encrypt 自己也在推进 45 天证书。证书寿命越短,续期就越需要全程自动化,提前几周发一封邮件的意义也就越小。

影响谁

原来靠人看邮件才去续期的,现在需要别的保障:

  • 把提醒邮件当成“该续期了”信号的人。 比如用 certbot certonly --manual 手动申请、手动添加 DNS TXT 记录的用户,以后不会再有人提醒你。
  • 自动化可能“悄悄失败”的团队。 定时任务被误删、systemd 定时器没启用、DNSPod 或阿里云的 API 密钥过期、新加的防火墙规则挡住了 HTTP-01 验证、磁盘写满……以前提醒邮件常常能兜住这些问题,现在只能靠监控。
  • 证书已续期但 Web 服务还在用旧证书的情况。 续期脚本成功了,却没人重载 nginx。这种问题提醒邮件从来发现不了,只检查磁盘上证书文件的脚本也发现不了。

宝塔面板用户可以在面板里确认 Let's Encrypt 证书的自动续签任务是否正常运行;托管在阿里云、腾讯云证书服务里的证书,可以在控制台确认到期通知的设置。

证书一旦过期,访客在 Chrome 里会看到 NET::ERR_CERT_DATE_INVALID,在 Firefox 里会看到 SEC_ERROR_EXPIRED_CERTIFICATE。

需要做什么

用自己的到期检查替代提醒邮件,检查对象是线上站点实际返回的证书。先确认续期任务确实存在并且能跑通:

systemctl list-timers | grep -i certbot
sudo certbot renew --dry-run

再加一个直接检查线上端口的独立监控。下面是一个可以放进 cron 的最小脚本:

#!/bin/sh
# example.com 的证书 14 天内到期则告警
if ! echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
    | openssl x509 -noout -checkend 1209600 >/dev/null; then
  echo "example.com 证书将在 14 天内到期" \
    | mail -s "TLS 证书到期告警" admin@example.com
fi

主机多的话用批量 SSL 检测,单个站点用 SSL 检测工具。查询证书透明度日志还能找出那些“谁也不记得申请过”的证书。常见服务器的证书续期配置,见自动续期指南。

常见问题

申请证书时还需要填邮箱吗?

自 2025 年 6 月 4 日起,邮箱不再用于发送到期提醒。客户端是否要求填写取决于具体的 ACME 客户端,续期本身并不依赖邮箱。

最简单的替代方案是什么?

定时检查服务器实际返回的证书,剩余不足两周左右就告警。直接检查线上端口,还能发现“证书续上了但 Web 服务没重载”的情况。

Let's Encrypt 从哪天起不再发到期提醒?

2025 年 6 月 4 日。Let's Encrypt 在 2025 年 1 月 22 日公布这一决定,提前了四个多月。

资料来源

  1. Let's Encrypt:Ending Support for Expiration Notification Emails