现场是这样的。阿里云 2 核 4G 的 Ubuntu 22.04,站点迁移时连续重建了五次证书,certbot renew 报 too many certificates already issued for example.com: see https://letsencrypt.org/docs/rate-limits,加 --dry-run 也报同样的错,业务只能先挂着旧证书。
中间走过弯路,把「多台机器各自申请同一域名,额度被叠加消耗」当成主因,改完现象没变。
把日志和配置对完,能解释这个现象的基本就这几处。同一组域名一周内重复签发超过五份,触发了 duplicate certificate 限额;调试时反复跑 certbot 没用 --dry-run,真实请求都记了数;验证失败次数到了限额,账号被临时锁定。
去官方页面确认撞的是哪条限额
curl -s https://letsencrypt.org/docs/rate-limits | grep -i 'duplicate certificate'
接着用 staging 环境验证配置不消耗正式额度
certbot renew --dry-run --staging
然后查看现有证书和剩余有效期
certbot certificates
多机场景改成一处签发再分发
rsync -a /etc/letsencrypt/live/ web2:/etc/letsencrypt/live/
恢复的判定其实很直接。certbot certificates 显示证书有效期正常,renew --dry-run 通过,站点 https 返回 200 且证书链完整。
提醒一点。staging 签出来的证书浏览器不信任,验证完记得切回正式环境重签,别把 staging 证书部署上线。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
