你的 Let's Encrypt SSL 自动续期失败? 证书过期可能会触发浏览器安全警告、中断 HTTPS 连接,并损害访客的信任。.
常见原因包括 ACME 验证失败、DNS 记录错误、端口被阻塞、Certbot 计划任务故障以及 Web 服务器配置错误。.
本指南介绍了如何排查 Let's Encrypt 证书续期失败的问题、恢复证书自动续期功能,以及如何预防未来出现的证书过期问题。.

为什么 Let's Encrypt 的自动续期会失败?
Let's Encrypt 证书的有效期有限,必须在到期前进行续期。续期自动化取决于您的 ACME 客户端、域名验证方式、服务器配置以及证书部署流程。.
简答: 检查证书的到期日期,运行续期测试,排查验证错误,验证 DNS 和网络访问,并确认续期调度程序是否正常运行。.
在未查明原因之前,请勿反复请求新的证书。不必要的重试可能会触发证书颁发机构的速率限制。.
Let's Encrypt 续期中的常见错误
| 错误 | 可能原因 | 需要检查的内容 |
|---|---|---|
| 未经授权 | ACME 挑战验证失败 | HTTP 响应和验证路径 |
| 连接被拒绝 | 源服务或端口不可用 | 防火墙和Web服务器 |
| DNS 问题 | DNS 记录错误或缺失 | A、AAAA 或 TXT 记录 |
| 超时 | 网络或路由故障 | 外部连接 |
| 速率受限 | 符合条件的请求过多 | ACME 客户端错误与限制 |
| 部署失败 | 证书未正确应用 | 续订钩子与服务器重载 |
1. 检查 SSL 证书的到期时间
首先,确定该证书是否已过期、即将过期,还是仍然有效。.
在 Linux 上,您可以使用 OpenSSL 检查证书文件:
openssl x509 -in /path/to/fullchain.pem -noout -dates
请将示例路径替换为您证书的实际位置。.
要检查正在运行的网站提供的证书,请使用:
openssl s_client -connect example.com:443 -servername example.com /dev/null | openssl x509 -noout -dates
这有助于区分证书续期失败与部署问题——在部署问题中,服务器仍会展示旧的证书。.
2. 运行 Certbot 续期测试
如果您的服务器使用 Certbot,请执行一次模拟续期:
sudo certbot renew --dry-run
此操作可在不替换正常工作流中的生产证书的情况下,测试证书续期配置。.
检查输出结果,查看是否存在挑战失败、身份验证错误、文件缺失或权限问题。.
您还可以列出由 Certbot 管理的证书:
sudo certbot 证书
重要提示: 这些命令适用于 Certbot 安装。主机控制面板和其他 ACME 客户端可能采用不同的续期机制。.
3. 修复 HTTP-01 验证失败的问题
HTTP-01 验证要求证书颁发机构通过 HTTP 协议在 80 端口从您的域名检索挑战资源。.
请确认该域名能解析到正确的服务器,并且从公共互联网可以访问入站 TCP 端口 80。.
此外,请检查可能阻塞以下请求的重定向、反向代理规则、防火墙策略和安全工具:
/.well-known/acme-challenge/
重定向本身并不一定构成问题,但不受支持的重定向目标或错误的路由可能会导致验证失败。.
如果无法开放80端口,请考虑采用一种合适的DNS-01验证方法作为替代方案。.
4. 检查 DNS 记录和 DNS-01 验证
不正确的 DNS 记录可能会将验证请求发送到错误的服务器。.
检查公共 A 和 AAAA 记录:
dig example.com A +short
dig example.com AAAA +short
如果您的域名中包含 AAAA 记录,请确认 IPv6 目标地址配置是否正确。.
对于 DNS-01 验证,ACME 客户端必须在相应的 _acme-challenge 名称。.
DNS 传播、API 权限或凭据错误都可能导致 DNS-01 续订失败。.
5. 验证 Certbot 自动续期计划
手动续订成功并不保证定时续订能正常运行。.
根据安装方式的不同,Certbot 可能会使用 systemd 定时器、cron 任务或其他调度机制。.
在使用 Certbot systemd 定时器的系统上,请检查:
systemctl list-timers --all | grep certbot
如需查看相关日志,请尝试:
sudo journalctl -u certbot.service
服务名称和日志位置各不相同。Snap 软件包、主机控制面板和自定义安装的行为可能有所不同。.
确认计划任务确实已执行,并报告续订成功。.
6. 检查 Nginx、Apache 及证书部署情况
有时证书续期成功,但Web服务器仍继续使用旧的证书。.
请检查您的 Web 服务器是否引用了正确的证书文件,以及部署钩子是否会重新加载该服务。.
在应用更改之前,请验证配置:
sudo nginx -t
对于受支持系统上的 Apache:
sudo apachectl configtest
请务必在确认配置有效后再重新加载服务。.
如果该问题涉及更广泛的服务器管理,请参阅我们的 托管型与非托管型主机指南.
7. 检查防火墙、CDN 和反向代理设置
如果挑战请求被拦截或路由错误,CDN、反向代理或Web应用防火墙可能会干扰ACME验证。.
请确认该验证方法与您的网络架构相匹配。.
对于 HTTP-01,证书颁发机构必须能够正确完成挑战响应。对于 DNS-01,DNS 记录的创建和可见性至关重要。.
请勿仅为了完成续期而永久禁用安全控制措施。请更正验证路由或身份验证配置。.
如何防止未来出现 SSL 证书续期失败的情况
- 启用证书过期监控。.
- 在服务器进行重大变更后,测试自动续订功能。.
- 监控 Certbot 或 ACME 客户端的故障。.
- 请确保 DNS 记录和验证凭据的准确性。.
- 通过限制权限来保护 DNS API 凭据。.
- 验证已续期的证书是否已实际部署。.
证书续期只是网站可用性的一部分。我们的 WordPress 503 故障排除指南 解释了其他可能导致网站访问中断的服务器端故障。.
托管型主机与自主管理的 SSL 续期
直接管理 SSL 证书虽然能提供灵活性,但也需要进行监控、配置维护和事件响应。.
对于 WordPress 网站,, SiteGround 以及 Cloudways 在评估具有托管 SSL 相关工作流的托管环境时,这些是值得考虑的选项。.
ScalaHosting 以及 KnownHost 当技术支持和服务器管理职责至关重要时,这些方面也值得进行比较。.
不过,自动证书安装、支持的验证方法以及续期责任因产品和套餐而异。购买前请确认具体的服务内容。.
请阅读我们的 Cloudways 与 SiteGround 对比 以了解有关托管主机服务的更多背景信息。.
如果必须更换服务提供商,我们的 WordPress 零停机迁移指南 介绍了如何规划更安全的过渡。.
常见问题解答
为什么我的 Let's Encrypt 证书没有自动续期?
常见原因包括域名验证失败、DNS 问题、网络访问受阻、调度异常或部署错误。.
如何测试 Certbot 的证书续期功能?
运行 sudo certbot renew --dry-run 并检查结果。这适用于使用 Certbot 的服务器。.
Let's Encrypt 是否需要使用 80 端口?
HTTP-01 验证需要 80 端口对 HTTP 的公开访问。DNS-01 验证不需要 80 端口的入站连接。.
过期的 Let's Encrypt 证书可以续期吗?
是的,前提是你仍然拥有该域名的控制权,并且能够完成所需的 ACME 验证。.
为什么我的网站在证书续期后仍然显示证书已过期?
Web 服务器或代理可能仍在使用旧的证书。请检查证书路径、部署钩子以及服务重载情况。.
Let's Encrypt 支持通配符证书吗?
是的。通配符证书需要进行 DNS-01 验证,而不是 HTTP-01 验证。.
最终裁决
当 Let's Encrypt 自动续期失败, 首先进行证书检查和受控的续期测试。然后调查 ACME 验证、DNS、防火墙规则、计划任务以及证书部署。.
最可靠的长期解决方案是将运行自动化与有效期监控及定期核查相结合。.
检查证书 → 测试续期 → 修复验证 → 验证调度程序 → 确认 HTTPS。.





