certbot 是干什么的
certbot 是最常用的 ACME 协议客户端,用来自动签发与续期 Let's Encrypt 等 CA 的证书。它提供三类工作方式:nginx/apache 插件可直接改写站点配置并重载,webroot 模式把校验文件放进已有站点根目录,manual 模式用于手工或脚本化校验。签发完成后由 systemd timer 或 cron 定时触发续期,当前 Let's Encrypt 证书有效期 90 天,客户端默认在到期前 30 天开始尝试续期。
基本信息
| webroot 模式 | certbot certonly --webroot -w /var/www/html -d example.com |
|---|---|
| nginx 插件 | certbot --nginx -d example.com,自动改配置并重载 |
| 续期试运行 | certbot renew --dry-run 验证续期链路 |
| 部署钩子 | --deploy-hook 在续期成功后执行重载命令 |
| 证书路径 | /etc/letsencrypt/live/<域名>/ 下的 fullchain.pem 与 privkey.pem |
| 有效期 | 90 天,默认到期前 30 天自动续期 |
签发与续期验证
签发与续期验证
# 只签发不安装:证书要分发到多台后端时用这个模式
certbot certonly --webroot -w /var/www/html -d example.com -d www.example.com
# 续期演练:用测试环境走完整流程,不消耗签发配额
certbot renew --dry-run
# 确认定时任务确实在跑
systemctl list-timers | grep certbot
# 续期成功后自动重载服务
certbot renew --deploy-hook "systemctl reload nginx"插件与模式选择
| 模式 | 适用场景 | 注意点 |
|---|---|---|
| webroot | 站点已在提供服务,不想让 certbot 改配置 | -w 必须是真实站点根目录 |
| nginx 插件 | 单机 Nginx 直接托管站点 | 会自动改配置,改动前先备份 |
| standalone | 80 端口空闲或可临时停服 | 需先停掉占用端口的进程 |
| dns-01 插件 | 泛域名或不方便开放 80 端口 | 依赖 DNS API 凭据,注意最小权限 |
certonly 只签发不安装:适合证书要分发到多台后端或负载均衡的场景,避免单机插件改动线上配置。
续期失败的常见根因是校验路径失效:站点根目录搬迁、伪静态把 .well-known 请求重写、CDN 回源配置变化都会让 http-01 校验返回 404。排查时先手工访问一次校验 URL 看真实响应。
注意签发频率限制:同一域名的重复签发有配额,反复试错会触发限速。所有验证性测试一律走 --dry-run;证书链不对外可信的环境可用 --staging 演练。