欢迎光临
我们一直在努力

免费的 Let’s Encrypt 证书老是自动续期失败,有哪些坑点?

作为个人站长,使用 Let’s Encrypt 提供的免费 SSL 证书是提升网站安全性的标准做法。Certbot 工具通常能够自动处理续期工作,但当自动续期失败时,往往会让站长措手不及。续期失败最常见的两大原因是:ACME 验证挑战失败(通常是防火墙或Web服务配置问题)和自动执行任务失效

本文将聚焦这些核心坑点,并提供实用的诊断和解决步骤。

坑点一:ACME HTTP-01 挑战被阻断

Let’s Encrypt 验证服务器需要通过互联网访问你的域名上的特定路径(/ .well-known/acme-challenge/),以证明你拥有该域名。如果这个访问被阻止,续期就会失败。

步骤 1:执行 Dry Run (模拟续期)

首先,使用 dry-run 模式模拟续期过程,这不会真正消耗你的配额,但能复现失败原因。

sudo certbot renew --dry-run

如果输出显示 The client lacks sufficient authorizationTimeout during connect, 则基本可以断定是连接问题。

步骤 2:检查防火墙 (Firewall)

Let’s Encrypt 默认使用 HTTP-01 挑战(即端口 80)进行验证。如果你的防火墙(如 UFW 或 iptables)关闭了 80 端口,验证将失败。

UFW 检查与修复示例:

# 检查 UFW 状态,确认 80 端口是否开放
sudo ufw status verbose

# 如果 80 端口未开放,开放它
sudo ufw allow 80/tcp
sudo ufw reload

步骤 3:检查 Web 服务器配置

如果你的 Web 服务器(Nginx 或 Apache)配置了强制 301/302 重定向到 HTTPS (443端口),或者使用了 HSTS,这可能会干扰端口 80 上的 ACME 挑战。Certbot 需要确保 / .well-known/acme-challenge/ 路径是可直接访问的,不会被重定向到 HTTPS。

Nginx 常见配置陷阱修复:

确保在你的 80 端口配置块中,或在全局配置中,ACME 挑战路径不会被重定向。对于使用 Certbot 自动配置的站长,通常不需要手动修改,但如果失败,请检查是否加入了阻止或重定向的规则。

# 确保在 80 端口的 server 块中,该路径可访问
server {
    listen 80;
    server_name example.com www.example.com;

    # Certbot 推荐的配置片段,确保路径不受重定向影响
    location ~ /.well-known/acme-challenge {
        allow all;
        # 停止处理,直接提供文件
        break;
    }

    # 否则,重定向到 HTTPS
    location / {
        return 301 https://$host$request_uri;
    }
}

坑点二:自动执行任务失效

Certbot 的续期是依赖于系统计划任务执行的,通常是通过 Cron Job 或 Systemd Timer。

步骤 4:验证 Systemd Timer (主流发行版如 Ubuntu 18.04+/CentOS 7+)

检查 Certbot 的定时器是否处于活动状态且成功执行。

# 检查 Certbot 定时器状态
systemctl status certbot.timer

# 查看最近的运行记录
sudo journalctl -u certbot.timer

如果定时器未运行,你需要手动启用它:

sudo systemctl enable certbot.timer
sudo systemctl start certbot.timer

步骤 5:验证 Cron Job (较旧系统或自定义安装)

检查 /etc/cron.d/certbot 文件是否存在且内容正确。该文件通常包含如下内容:

# /etc/cron.d/certbot 示例
0 */12 * * * root test -x /usr/bin/certbot -a ! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew

如果 Cron Job 配置有问题,或者 /usr/bin/certbot 路径不正确,任务将静默失败。确保你的系统用户(通常是 root)能够执行该命令。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » 免费的 Let’s Encrypt 证书老是自动续期失败,有哪些坑点?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址