没收到邮件别慌,邮件只是辅助提醒,核心是确认证书自动续期配置是否正常运行,不要单纯依赖邮件通知。
先说结论:Let's Encrypt 通知邮件可能进入垃圾箱或发送至旧账户,生产环境应以自动化续期监控为主。
- 先确认:检查 ACME 账户绑定的联系邮箱是否正确
- 先处理:验证本地自动续期任务(Cron 或 systemd)是否存活
- 再验证:执行 dry-run 测试确保续期流程通畅
命令速用版
# 查看证书到期时间
sudo openssl x509 -in /etc/letsencrypt/live/你的域名/fullchain.pem -noout -enddate
# 查看 Certbot 注册账户邮箱
sudo certbot accounts
# 测试续期流程(不实际执行)
sudo certbot renew `--dry-run`为什么会这样
Let's Encrypt 的过期提醒邮件是发送至申请证书时 ACME 账户注册的邮箱,而不是域名 Whois 邮箱。如果你更换过客户端配置、使用过多个账户、或者邮件被服务商判定为垃圾邮件,都可能导致收不到通知。公开资料显示,邮件通常在到期前 30 天、15 天、7 天、3 天和 1 天发送,但这依赖于账户联系信息的准确性。
分步处理
1. 确认证书实际到期时间
不要凭感觉,先用 openssl 命令查看当前证书的具体有效期,确认是否真的临近到期。
2. 检查 ACME 账户邮箱
如果你使用的是 Certbot,运行 sudo certbot accounts 可以看到本地存储的账户信息。如果需要更新邮箱,可以使用 sudo certbot update_account `--email` your@example.com 命令。注意,如果你曾经用过不同的客户端(如 acme.sh),需要去对应的配置目录查找。
3. 检查自动续期任务
Linux 系统通常使用 Cron 或 systemd timer。检查 /etc/cron.d/certbot 或使用 systemctl list-timers 确认定时任务是否处于 active 状态。很多时候邮件没收到是因为续期任务早就失败了,但没人发现。
4. 查看续期日志
如果自动任务存在但证书未更新,查看 Certbot 日志定位错误原因,确认是否有权限错误或验证失败。
sudo tail -n 50 /var/log/letsencrypt/letsencrypt.log5. 检查垃圾邮件箱
搜索发件人包含 "Let's Encrypt" 或 "stats@letsencrypt.org" 的邮件,有时候会被误判。
怎么验证是否生效
执行 sudo certbot renew `--dry-run` 是验证续期配置最安全的方法。它会走完整的验证流程但不签发新证书。如果输出显示 "Congratulations, all renewals succeeded",说明自动化流程正常。同时,更新账户邮箱后,可以尝试触发一次账户信息更新,看是否收到确认邮件。
常见坑
- 多账户混淆:同一台服务器上可能存在多个 ACME 账户,确保你检查的是签发当前证书的那个账户。
- 权限问题:查看证书文件或运行 Certbot 命令通常需要 root 权限,普通用户可能无法读取。
- 依赖邮件监控:邮件是最后一道防线,生产环境建议搭配监控工具(如 Uptime Kuma 或 Zabbix)直接探测证书有效期。
参考来源
- Let's Encrypt Official Docs - Expiration Emails: https://letsencrypt.org/docs/expiration-emails/
- Certbot Documentation - Account Management: https://certbot.eff.org/