摘要:证书快过期或已过期时,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 refused80 端口不通或防火墙拦截安全组/防火墙是否放行 80;IPv6 AAAA 是否指到另一台不响应的机器
DNS problem: NXDOMAIN / SERVFAIL域名解析不存在或 DNSSEC 等失败A/AAAA 是否删过、注册是否过期;DNS-01 则查 _acme-challenge TXT
CAA record … prevents issuanceCAA 不允许 letsencrypt.org调整 CAA,或确认你本意就不是这家 CA
too many … retry after … / rate limit短时间重复签发或失败授权过多停掉生产重试,改 staging;等到报错里的时间再发一次
权限 / lock / 找不到 renewal conf客户端本地配置坏了,还没到域名验证查 lock 文件、renewal 目录、是否装了两套 Certbot

一张证书里若绑了 apex、www 和多个子域,每一个名字都要通过验证。某个已不用的 www 记录删了但证书里还留着,会拖垮整张续期。

免费 SSL 续期失败怎么办:Let’s Encrypt 常见报错与回滚(2026)-有序
Let's Encrypt 文档《Challenge Types》:HTTP-01 需在 80 端口提供校验文件,多机时每台都要能返回同一内容(2026-11-07 截自官方文档)

2. 用 dry-run 和 staging,别在生产上狂点重试

Certbot 文档写明:certbot renew 会检查所有已装证书,通常在生命周期剩余不到约 1/3 时才真正续(寿命 ≤10 天的证书按约一半阈值);可反复跑,未到期时多数情况什么也不做。排障时优先:

sudo certbot renew --dry-run

干跑走的是测试路径,用来确认插件、webroot、hooks 是否还能通。需要反复试签发逻辑时,把客户端指到 Let's Encrypt Staging, staging 限额更高,专门给你试错。生产环境连着重试,很容易先撞上失败授权限额,再把真正需要的续期窗口堵死。

免费 SSL 续期失败怎么办:Let’s Encrypt 常见报错与回滚(2026)-有序
Certbot 文档「Renewing certificates」: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 的「同名集合续期」仍可能受失败授权与「同精确名集合」限额约束。
免费 SSL 续期失败怎么办:Let’s Encrypt 常见报错与回滚(2026)-有序
Let's Encrypt《Rate Limits》:限额按请求用 token bucket;吊销证书不会重置限额;测试请用 staging(2026-11-07 截自官方文档)

报错里会带 retry after <时间>。在那之前不要继续对生产下单;修好根因后,等窗口到了再发一次生产续期。

3. 按报错修:现场高频四条

unauthorized / 404(HTTP-01)

  1. 确认站点文档根是否已迁移;Certbot webroot 是否仍指向旧目录。
  2. 框架或 Nginx 若把所有路径交给前端路由,给 /.well-known/acme-challenge/ 单独 location,允许访问隐藏目录。
  3. 多机或负载均衡:校验请求可能打到任意一台,每台都要能返回同一文件(Challenge Types 原文要求)。
  4. 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 跑通以前,不要为了「换一组名字绕过限额」去乱加无关域名;那会签发另一张证,并占用注册域名维度的额度。

免费 SSL 续期失败怎么办:Let’s Encrypt 常见报错与回滚(2026)-有序
Let's Encrypt Staging 环境说明页:测试与排障应使用 staging,避免消耗生产限额(2026-11-07 截自官方文档)

4. 回滚:先让访客恢复绿锁,再修续期

续期失败时,目标通常是两件事:站点继续用旧证可访问,以及修好验证后再换新证。可按这个顺序:

  1. 别急着重载成半截新文件。 若 hook 已写出不完整的 fullchain/key,先确认 Nginx/Caddy 当前仍指向上一份可用证书。
  2. 从备份或 Certbot 归档恢复。 Certbot 常在 /etc/letsencrypt/archive/<name>/ 留历史版本,live/ 下是符号链接。把 live 指回上一组 fullchain + privkey(或从你自己的对象存储/机器备份拷回),再 nginx -t && systemctl reload nginx(或对应服务)。命令以你发行版为准。
  3. 确认浏览器与外网探测。 本机 curl -vI https://你的域名 看证书到期日;再用手机流量或不经过你办公网的出口测一次。监控条目可对照 网站可用性与证书告警清单。
  4. CDN 场景。 边缘证书与源站证书是两层。源站回滚后,若边缘仍报错,再查 Cloudflare 加密模式是否与源站强制 HTTPS 打架,见 Cloudflare CDN 与 SSL 与 404/502 排查清单。
  5. 根因未修前,关掉会狂重试的 cron。 避免失败授权计数被刷满;改用 staging / dry-run 验证。
  6. 生产一次续成后,立刻再跑 certbot renew --dry-run,确认 timer/cron 与 deploy hook(重载 Web 服务器)仍在。

若你用的是宝塔等面板代管证书,回滚入口在面板「SSL」历史或服务器上的同名目录;面板操作仍应先保证站点配置里的证书路径指向可用文件,再在面板里点续期。面板取舍见 宝塔面板优缺点与安全注意。

5. 续期失败现场核对清单

  1. 记下证书到期日与告警时间,确认是「将过期」还是「已过期红字」。
  2. 读日志第一条具体错误类型(上表)。
  3. certbot renew --dry-run 或 staging 复现;停止对生产无间隔重试。
  4. 按类型修:80/webroot、DNS/TXT、CAA、或去掉证书里已无解析的多余名。
  5. 需要保访问时,先回滚 live/备份证书并 reload。
  6. 生产续成后,检查自动续期 timer 与 hook,并挂上到期监控。

相关阅读

官方来源(查询日期 2026-11-07,北京时间)

风险提示:证书过期会导致访客看到安全警告甚至无法访问;回滚操作前请确认私钥与证书匹配,错误的证书链会导致全站 HTTPS 失败。DNS API 密钥权限很大,应最小授权并限制文件可读范围。本文不构成运维或安全审计承诺。