证书 47 天就过期?我在 EC2 上用 Certbot 搞定了自动续期

上周收到运维群里转发的消息:CA/Browser Forum 通过决议,SSL/TLS 证书有效期要逐步缩短到 47 天。一年续 8 次以上,手动?想都别想。

我正好有几台亚马逊云科技的 EC2 跑 Nginx,证书是 Let's Encrypt 的。趁这个机会把自动续期整明白了,顺便试了三种 Certbot 模式,踩了两个坑,记录一下。

有效期缩短时间表

时间 有效期
现在 398 天
2026.3 200 天
2027.3 100 天
2029.3 47 天

ACM 用户可以不看这篇

如果你用 ALB / CloudFront / API Gateway,直接用 ACM 申请证书,自动续期不需要操心。本文是给那些在 EC2 上自建 Nginx、用第三方证书的同学看的。

三种 Certbot 模式

Standalone:简单粗暴但有停机

bash 复制代码
sudo systemctl stop nginx
sudo certbot certonly --standalone -d yourdomain.com
sudo systemctl start nginx

每次续期 Nginx 要停 10-30 秒。开发环境凑合用,生产别碰。

Webroot:零停机但需要改配置

核心是给 ACME 验证路径开个口子:

nginx 复制代码
server {
    listen 80;
    server_name yourdomain.com;

    location /.well-known/acme-challenge/ {
        root /usr/share/nginx/html;
    }

    location / {
        return 301 https://$host$request_uri;
    }
}

踩坑:我第一次忘了加这个 location,80 端口全部 301 到 HTTPS,Let's Encrypt 验证请求也被重定向了,签发失败。排查半小时。

bash 复制代码
sudo certbot certonly --webroot -w /usr/share/nginx/html -d yourdomain.com

Nginx 插件:零停机 + 全自动(推荐)

bash 复制代码
sudo certbot --nginx -d yourdomain.com

一条命令搞定验证、下载、配置、reload。后续 certbot renew 自动搞定一切。

自动续期

bash 复制代码
# 检查定时任务是否存在
sudo systemctl list-timers | grep certbot

# 没有就手动加
echo "0 3,15 * * * root certbot renew --quiet" | sudo tee /etc/cron.d/certbot

DigiCert 也支持 ACME

商业证书同样能自动化:

bash 复制代码
sudo certbot register \
  --server "https://acme.digicert.com/v2/acme/directory/" \
  --eab-kid "YOUR_KID" --eab-hmac-key "YOUR_KEY" \
  --email admin@yourdomain.com --agree-tos

sudo certbot --nginx \
  --server "https://acme.digicert.com/v2/acme/directory/" \
  -d yourdomain.com

总结

模式 停机 复杂度 适合
Standalone 10-30s 测试
Webroot 需要掌控配置
Nginx 插件 大部分生产

能用 ACM 就用 ACM,自建就 Nginx 插件模式一把梭。别等 47 天有效期落地了才慌。


参考:亚马逊云科技官博 - 使用ACME协议实现证书自动续期

相关推荐
明月心95213 小时前
https配置
nginx·https配置
Ai拆代码的曹操13 小时前
TCP RST 包全链路定位:从 Connection Reset 错误到 Nginx keepalive_timeout 不匹配
网络协议·tcp/ip·nginx
她叫我大水龙16 小时前
nginx 编译指南:静态编译 + 动态编译
运维·nginx
Icoolkj17 小时前
ICOOLKJ 前后端分离项目完整部署文档(MySQL8.4+Redis+JDK21+Nginx+HTTPS+自动同步演示库)
redis·nginx·https
白驹过隙不负青春2 天前
OpenResty 1.29.2.5 部署 + Nginx平滑升级运维文档
nginx·openresty
Cry丶2 天前
一次 FTP 上传引发 504 Gateway Timeout 的排查复盘
java·nginx·ftp·openresty·被动模式·504 gateway·生产问题排查
一勺菠萝丶2 天前
生产环境平滑升级实战-Nginx维护页数据库迁移与安全回滚
数据库·nginx·安全
Helen_cai3 天前
OpenHarmony 路由封装 RouterUtil 页面跳转统一管理(API Version23+)
运维·服务器·nginx·华为·harmonyos
云计算磊哥@3 天前
运维开发宝典055-大型网站nginx服务器管理全集1
服务器·nginx·运维开发
碎碎念_4924 天前
前后端分离项目开发规范
nginx·vue·springboot·restful