旧版本 Certbot 客户端导致 Let's Encrypt ACME 协议兼容性问题如何升级?

文章导读
最直接的处理方式是立即将 Certbot 客户端升级到发行版仓库提供的最新稳定版本,或者使用官方推荐的安装渠道重新安装,以确保证书续签流程符合当前的 ACME 协议标准。
📋 目录
  1. 1. 确认当前环境与版本
  2. 2. 备份现有配置(关键步骤)
  3. 3. 分渠道执行升级
  4. 4. 验证升级结果
  5. 5. 常见报错与解决
  6. 6. 检查自动续签任务
  7. 参考来源
A A

最直接的处理方式是立即将 Certbot 客户端升级到发行版仓库提供的最新稳定版本,或者使用官方推荐的安装渠道重新安装,以确保证书续签流程符合当前的 ACME 协议标准。

先说结论:旧版本客户端无法通过 Let's Encrypt 的安全验证,必须升级才能恢复自动续签。

  • 先确认:运行版本检查命令,判断当前客户端是否过旧。
  • 先处理:根据操作系统类型,选择包管理器或官方脚本进行升级。
  • 再验证:执行干运行测试,确保续签命令不再报错。

1. 确认当前环境与版本

升级前必须先确认安装渠道,不同渠道升级命令完全不同。混合安装会导致命令冲突。

# 查看当前 Certbot 版本
certbot `--version`

# 检查安装路径(判断是 snap 还是 apt 安装)
which certbot

如果路径包含 /snap/,说明是 Snap 版本;如果包含 /usr/bin/ 且系统是 Ubuntu,可能是 apt 版本。

旧版本 Certbot 客户端导致 Let's Encrypt ACME 协议兼容性问题如何升级?

2. 备份现有配置(关键步骤)

升级过程可能重置权限或修改配置结构,务必先备份。

sudo cp -r /etc/letsencrypt /etc/letsencrypt.bak_$(date +%F)

3. 分渠道执行升级

根据上一步确认的渠道和 Web 服务器类型选择对应命令。

Ubuntu/Debian (APT 渠道)

sudo apt update
# Nginx 用户
sudo apt install `--only-upgrade` certbot python3-certbot-nginx
# Apache 用户
sudo apt install `--only-upgrade` certbot python3-certbot-apache

Ubuntu (Snap 渠道)

旧版本 Certbot 客户端导致 Let's Encrypt ACME 协议兼容性问题如何升级?
sudo snap refresh certbot

CentOS/RHEL (YUM/DNF)

sudo yum update certbot
# 如需插件,通常需启用 EPEL 源
sudo yum install python3-certbot-nginx

4. 验证升级结果

升级完成后,不要直接等待到期,应立即手动触发测试。

sudo certbot renew `--dry-run`

如果输出 Simulation success,说明通信正常。

5. 常见报错与解决

  • 错误:Plugin not found / 插件未找到
    原因:升级主程序后插件未同步升级。
    解决:根据 Web 服务器类型安装对应插件包(见第 3 步)。
  • 错误:Unauthorized / 403
    原因:ACME 协议版本过旧或被 CA 拒绝。
    解决:确认 certbot 版本已更新至最新,旧版本不再支持 ACME v1。
  • 错误:Timeout / 连接超时
    原因:防火墙拦截了验证请求。
    解决:检查安全组是否放行 80 端口,确认出站流量未被拦截。

6. 检查自动续签任务

sudo systemctl status certbot.timer
# 或者检查 crontab
crontab -l | grep certbot

参考来源

  • Let's Encrypt 官方博客 - 关于协议变更和废弃的公告:https://letsencrypt.org/
  • Certbot 官方文档 - 安装与升级指南:https://certbot.eff.org/
  • Electronic Frontier Foundation (EFF) - Certbot 项目主页:https://github.com/certbot/certbot