检查 Let's Encrypt 续签脚本版本最直接的方式是运行版本查询命令,然后根据安装渠道执行对应的升级操作。
官方推荐的 Certbot 客户端和社区常用的 acme.sh 脚本都有明确的版本查询与升级指令,升级前需确认当前安装方式以避免环境冲突。
先说结论:通过命令行查询当前版本号,对比官方仓库 release 信息,按原安装渠道升级最安全。
- 适合:所有使用 Certbot 或 acme.sh 管理证书的 Linux 服务器
- 先准备:确认脚本安装路径、当前安装渠道(snap/apt/源码)及 root 权限
- 验收:升级后必须执行 dry-run 测试,确保证书续签流程正常
命令速用版
根据你使用的客户端工具,直接复制以下命令检查版本。
Certbot 官方客户端:
certbot `--version`acme.sh 社区脚本:
acme.sh `--version`若需升级,Certbot 通常通过包管理器更新,acme.sh 使用内置升级命令。
为什么会这样
续签脚本版本过旧可能导致 ACME 协议兼容性问题或安全漏洞。
Let's Encrypt 的 ACME 协议会随时间演进,旧版客户端可能不支持新的验证挑战类型或加密算法。此外,脚本本身的 bug 修复和安全补丁也依赖版本更新。但版本并非越新越好,生产环境应优先保证稳定性,仅在收到安全通告或功能缺失时升级。
分步处理
按以下步骤检查并更新续签脚本,确保操作可回滚。
1. 确认安装渠道
执行 which certbot 或 which acme.sh 查看路径。若路径包含 snap,说明是通过 Snap 安装;若在 /usr/bin 且系统是 Ubuntu/Debian,可能是 apt 安装。
2. 执行升级操作
Snap 安装 Certbot:sudo snap refresh certbot
Apt/Yum 安装 Certbot:sudo apt update && sudo apt install certbot 或对应 yum 命令
acme.sh 脚本:acme.sh `--upgrade`
3. 检查定时任务
续签通常由 systemd timer 或 cron 触发。检查 systemctl list-timers 或 crontab -l 确认续签任务存在且未被禁用。
怎么验证是否生效
升级后不要立即等待自然续签,应手动触发测试。
Certbot 验证:
sudo certbot renew `--dry-run`观察输出末尾是否显示 Simulated renewal of non-expired certificates succeeded。
acme.sh 验证:
acme.sh `--cron` `--home` "~/.acme.sh" `--dry-run`若无报错且显示 renewal 成功迹象,说明脚本工作正常。
常见坑
- 渠道混用:不要同时用 snap 和 apt 安装 Certbot,会导致路径冲突和版本混乱。
- 权限不足:续签需要读写私钥权限,升级后若服务用户变更可能导致续签失败。
- 频率限制:频繁执行 dry-run 可能触发 Let's Encrypt 的速率限制,测试失败后需等待一段时间。
- 钩子脚本失效:若配置了 deploy-hook 重启 nginx 等操作,升级后需确认钩子脚本路径未变化。
常见问题
旧版本脚本会突然无法续签吗?
通常不会立即失效,但存在风险。Let's Encrypt 会提前公告旧协议停用计划,建议关注官方通知。
升级脚本会导致现有证书失效吗?
不会。升级仅更新客户端工具,不影响已签发的证书文件,但错误配置可能导致后续续签失败。
需要开启自动升级吗?
建议开启系统包管理器的安全更新,但 major 版本升级建议先在测试环境验证。
参考来源
- Certbot Official Instructions, https://certbot.eff.org/instructions
- Certbot GitHub Repository, https://github.com/certbot/certbot
- acme.sh Wiki, https://github.com/acmesh-official/acme.sh/wiki