摘要:证书快过期或已过期时,certbot renew / acme 客户端报 unauthorized、连接超时、NXDOMAIN、CAA、rateLimited,该怎么读日志、怎么用 staging 干跑、怎么在换证失败时回滚到旧证书。申请与自动续期入门见旧文;本文只写续期失败现场。依据 Let's Encrypt 与 Certbot 公开文档;查询日期 2026-11-07。affiliate_later。
依据:Let's Encrypt《Challenge Types》、《Rate Limits》(页面标注更新于 2026-08-05)、《Staging Environment》、Certbot User Guide · Renewing certificates。查询日期:2026-11-07(北京时间)。只放官网普通链接(
affiliate_later)。控制台路径与插件名以你服务器上的客户端版本为准。
站点已经上过 HTTPS,某一天访客浏览器突然红字,或 certbot renew 邮件/监控告警说续期失败。怎么申请免费证、怎么装定时任务,见本站 HTTPS 免费证书申请与自动续期;接了 CDN 时加密模式与回源,见 Cloudflare CDN 与 SSL。本文只处理续期已经失败或即将失败的现场:先读报错类型,再决定修 DNS、放行 80、改 webroot,还是先回滚旧证书保访问。
1. 先分清:验证失败,还是本地根本没跑到验证
打开最近一次续期日志(Certbot 常见在 /var/log/letsencrypt/letsencrypt.log),从上往下找第一条具体失败,而不是停在总括句「Some challenges have failed」。
| 日志里大致长什么样 | 多半卡在哪 | 先做的核对 |
|---|---|---|
unauthorized / Invalid response / 404 on /.well-known/acme-challenge/ | HTTP-01:校验文件没被正确返回 | webroot 是否搬过家、隐藏目录是否被重写规则吃掉、是否另一台机器在应答 |
Timeout during connect / Connection refused | 80 端口不通或防火墙拦截 | 安全组/防火墙是否放行 80;IPv6 AAAA 是否指到另一台不响应的机器 |
DNS problem: NXDOMAIN / SERVFAIL | 域名解析不存在或 DNSSEC 等失败 | A/AAAA 是否删过、注册是否过期;DNS-01 则查 _acme-challenge TXT |
CAA record … prevents issuance | CAA 不允许 letsencrypt.org | 调整 CAA,或确认你本意就不是这家 CA |
too many … retry after … / rate limit | 短时间重复签发或失败授权过多 | 停掉生产重试,改 staging;等到报错里的时间再发一次 |
| 权限 / lock / 找不到 renewal conf | 客户端本地配置坏了,还没到域名验证 | 查 lock 文件、renewal 目录、是否装了两套 Certbot |
一张证书里若绑了 apex、www 和多个子域,每一个名字都要通过验证。某个已不用的 www 记录删了但证书里还留着,会拖垮整张续期。

2. 用 dry-run 和 staging,别在生产上狂点重试
Certbot 文档写明:certbot renew 会检查所有已装证书,通常在生命周期剩余不到约 1/3 时才真正续(寿命 ≤10 天的证书按约一半阈值);可反复跑,未到期时多数情况什么也不做。排障时优先:
sudo certbot renew --dry-run
干跑走的是测试路径,用来确认插件、webroot、hooks 是否还能通。需要反复试签发逻辑时,把客户端指到 Let's Encrypt Staging, staging 限额更高,专门给你试错。生产环境连着重试,很容易先撞上失败授权限额,再把真正需要的续期窗口堵死。

certbot renew 与剩余寿命约 1/3 阈值;可用 pre/post hook(2026-11-07 截自官方文档)Let's Encrypt《Rate Limits》写明:限额用 token bucket 计算,没有人工「立即清空」;吊销证书也不会重置限额。和续期最相关的几条(以文档 2026-08-05 版为准,数字以后台原文为准):
- 同一组精确标识名:每 7 天最多约 5 张新证;常见踩坑是反复重装客户端或每次部署都删掉 ACME 配置。
- 每个标识、每个账户:每小时最多约 5 次失败授权,之后会暂时拦新订单。
- 用 ARI(ACME Renewal Info) 协调的续期可豁免全部限额;未支持 ARI 的「同名集合续期」仍可能受失败授权与「同精确名集合」限额约束。

报错里会带 retry after <时间>。在那之前不要继续对生产下单;修好根因后,等窗口到了再发一次生产续期。
3. 按报错修:现场高频四条
unauthorized / 404(HTTP-01)
- 确认站点文档根是否已迁移;Certbot webroot 是否仍指向旧目录。
- 框架或 Nginx 若把所有路径交给前端路由,给
/.well-known/acme-challenge/单独location,允许访问隐藏目录。 - 多机或负载均衡:校验请求可能打到任意一台,每台都要能返回同一文件(Challenge Types 原文要求)。
- Let's Encrypt 会跟随最多 10 次跳转,且只接受 80/443 的 http/https;别把挑战跳到奇怪端口。
连接超时 / Connection refused
即使站点对外只开 HTTPS,HTTP-01 仍要求 80 可达。云厂商安全组、本机 firewalld/ufw、以及「全站强制 HTTPS」之前是否误伤挑战路径,都要查。AAAA 若指向另一台机器,校验可能走 IPv6 失败,而你本机只用 IPv4 测试会误判「没问题」。
NXDOMAIN / DNS
被删的子域、过期域名、或 DNS-01 的 _acme-challenge TXT 没写上/未传播,都会让续期整单失败。TXT 写好后若服务商传播慢,客户端要等到传播完成再触发校验;旧 TXT 堆太多也可能让响应过大被拒,用完应清理。
CAA
DNS 里若有 CAA,且未授权 letsencrypt.org,签发会被拒。改 CAA 后等传播,再 dry-run。
修的过程中,staging 跑通以前,不要为了「换一组名字绕过限额」去乱加无关域名;那会签发另一张证,并占用注册域名维度的额度。

4. 回滚:先让访客恢复绿锁,再修续期
续期失败时,目标通常是两件事:站点继续用旧证可访问,以及修好验证后再换新证。可按这个顺序:
- 别急着重载成半截新文件。 若 hook 已写出不完整的 fullchain/key,先确认 Nginx/Caddy 当前仍指向上一份可用证书。
- 从备份或 Certbot 归档恢复。 Certbot 常在
/etc/letsencrypt/archive/<name>/留历史版本,live/下是符号链接。把live指回上一组fullchain+privkey(或从你自己的对象存储/机器备份拷回),再nginx -t && systemctl reload nginx(或对应服务)。命令以你发行版为准。 - 确认浏览器与外网探测。 本机
curl -vI https://你的域名看证书到期日;再用手机流量或不经过你办公网的出口测一次。监控条目可对照 网站可用性与证书告警清单。 - CDN 场景。 边缘证书与源站证书是两层。源站回滚后,若边缘仍报错,再查 Cloudflare 加密模式是否与源站强制 HTTPS 打架,见 Cloudflare CDN 与 SSL 与 404/502 排查清单。
- 根因未修前,关掉会狂重试的 cron。 避免失败授权计数被刷满;改用 staging / dry-run 验证。
- 生产一次续成后,立刻再跑
certbot renew --dry-run,确认 timer/cron 与 deploy hook(重载 Web 服务器)仍在。
若你用的是宝塔等面板代管证书,回滚入口在面板「SSL」历史或服务器上的同名目录;面板操作仍应先保证站点配置里的证书路径指向可用文件,再在面板里点续期。面板取舍见 宝塔面板优缺点与安全注意。
5. 续期失败现场核对清单
- 记下证书到期日与告警时间,确认是「将过期」还是「已过期红字」。
- 读日志第一条具体错误类型(上表)。
certbot renew --dry-run或 staging 复现;停止对生产无间隔重试。- 按类型修:80/webroot、DNS/TXT、CAA、或去掉证书里已无解析的多余名。
- 需要保访问时,先回滚
live/备份证书并 reload。 - 生产续成后,检查自动续期 timer 与 hook,并挂上到期监控。
相关阅读
- 网站 HTTPS 免费证书怎么申请和自动续期
- Cloudflare 免费 CDN 与 SSL 接入
- 网站 404 / 502 排查:DNS、证书、源站与 CDN 缓存
- 网站可用性监控:HTTP 与证书到期告警
- 宝塔面板要不要装:优缺点与安全注意
官方来源(查询日期 2026-11-07,北京时间)
- Let's Encrypt:Challenge Types、Rate Limits、Staging Environment
- Certbot:User Guide · Renewing certificates
- 限额数字、挑战行为以查询当日官方文档为准;客户端版本不同,命令与阈值可能略有差异。
风险提示:证书过期会导致访客看到安全警告甚至无法访问;回滚操作前请确认私钥与证书匹配,错误的证书链会导致全站 HTTPS 失败。DNS API 密钥权限很大,应最小授权并限制文件可读范围。本文不构成运维或安全审计承诺。
全部评论:1条