亚马逊AWS官方博客
应对TLS/SSL证书有效期大幅缩短——使用ACME协议实现证书自动续期
摘要:CA/Browser Forum 于2025年4月正式通过决议,将分阶段大幅缩短 SSL/TLS 证书的最大有效期。如果客户使用亚马逊云科技的ACM服务,则证书到期更新可以自动化进行,无需客户手动操作。但是依然有很多客户,出于各种原因,在云上自建应用,并且使用了第三方证书,那么 TLS 证书的管理和续期就是客户的责任。本文以在运行Nginx的EC2, Let’s Encrypt为例,演示如何实现证书自动续期的实战方案,其他商业证书也可以依据文中原理,类似处理。
目录
一、引言
CA/Browser Forum 于2025年4月正式通过决议,将分阶段大幅缩短 SSL/TLS 证书的最大有效期。具体时间表为:2026年3月15日起从现行的398天缩短至200天,2027年3月起进一步缩至100天,2029年3月起最终缩至仅47天(31天覆盖大月 + 15天缓冲 + 1天冗余)。与此同时,域名验证信息的复用期限也将同步缩短至约10天。
缩短有效期的核心目的有三:一是确保证书中的身份信息始终与实际情况一致,提升可信度;二是缩小因证书被盗用或错误签发带来的风险窗口;三是倒逼行业全面推进自动化管理。当有效期降至47天后,每年至少需更新8次以上,手动操作将完全不可持续。因此,企业应尽早全面盘点现有证书资产,部署基于 ACME 协议的自动签发与续期体系,并建立到期监控与告警机制,必要时可委托专业服务商管理,以从容应对这一重大变革。
如果客户使用亚马逊云科技的ACM服务,则证书到期更新可以自动化进行,无需客户手动操作。但是依然有很多客户,出于各种原因,在云上自建应用,并且使用了第三方证书,那么 TLS 证书的管理和续期就是客户的责任。例如,Let’s Encrypt 证书每 90 天过期一次,DigiCert 等商业证书通常有效期为 1 年(最长 397 天)。无论哪种,手动续期都是随时可能引发故障的定时炸弹。
本文以在运行Nginx的EC2, Let’s Encrypt为例,以演示如何实现证书自动续期的实战方案,其他商业证书也可以依据文中原理,类似处理。所有内容均在 Amazon Linux 2023 EC2 实例上实测验证,使用 Nginx 1.28 和 Certbot 2.6。
二、前置条件
2.1 EC2 实例准备
- Amazon Linux 2023(AL2、Ubuntu、RHEL 命令类似)
- 已安装 Nginx 并正常提供服务
- 域名已通过 DNS A 记录指向 EC2 实例的公网 IP
- 安全组已放行 80(HTTP)和 443(HTTPS)端口的入站流量
2.2 安装 Nginx
2.3 安装 Certbot
2.4 基础 Nginx 配置
修改nginx/conf.d/yourdomain.conf
验证配置:
三、第一部分:Let’s Encrypt + Certbot
3.1 初始准备
在选择续期模式之前,需要先获取第一张证书。任何模式都可以完成首次签发,真正重要的是续期时的配置方式。
3.2 模式一:Standalone — 简单但有短暂停机
工作原理: Certbot 在本地 80 端口启动一个临时 Web 服务器来处理 ACME HTTP-01 验证。由于 Nginx 已占用 80 端口,必须先停止 Nginx。
步骤 1:获取证书
步骤 2:配置 Nginx 启用 HTTPS
创建或更新 /etc/nginx/conf.d/yourdomain.conf:
步骤 3:设置带钩子的自动续期
续期配置保存在 /etc/letsencrypt/renewal/yourdomain.com.conf,首次成功运行后 Certbot 会自动记录钩子:
优点:
- 配置最简单 — 无需修改 Nginx 配置
- 适用于任何 Web 服务器,不限于 Nginx
缺点:
- ⚠️ 每次续期有 10–30 秒停机(Nginx 被停止)
- 80 端口必须可用(不能有其他服务占用)
适用场景: 开发/测试环境、低流量站点、或可以接受短暂停机的场景。
3.3 模式二:Webroot — 零停机
工作原理: Certbot 将验证文件放到 Nginx 的 Web 根目录中,Nginx 直接提供该文件 — 无需重启。Let’s Encrypt 通过请求 http://yourdomain.com/.well-known/acme-challenge/<token> 来完成验证。
步骤 1:修改 Nginx 配置以支持 ACME 验证
⚠️ 注意:
如果你的 80 端口 server 块配置了全局 return 301 重定向到 HTTPS,ACME 验证请求也会被重定向 — 导致验证失败。
在 /etc/nginx/conf.d/yourdomain.conf 的重定向之前添加例外规则:
步骤 2:验证 ACME 路径是否可访问
如果看到 HTTP/1.1 200 OK,说明配置正确。如果看到 301 Moved Permanently,说明 ACME location 块没有生效 — 检查 Nginx 配置中的规则顺序。
步骤 3:获取证书
步骤 4:测试自动续期
续期配置(/etc/letsencrypt/renewal/yourdomain.com.conf)内容如下:
无需 pre/post 钩子 — Nginx 全程运行。
ℹ️ 提示:
添加 deploy 钩子,在续期成功后自动重载 Nginx 以加载新证书:
优点:
- ✅ 零停机 — 续期期间 Nginx 持续提供服务
- 适用于任何能提供静态文件的 Web 服务器
缺点:
- 需要一次性修改 Nginx 配置(添加 ACME 验证 location 块)
- Webroot 路径必须与 Nginx 的文档根目录一致
适用场景: 希望零停机同时保留 Nginx 配置完全控制权的生产环境。
3.4 模式三:Nginx 插件 — 零停机,全自动集成
工作原理: Certbot 直接与 Nginx 通信 — 临时修改 Nginx 配置来处理 ACME 验证,完成验证后安装新证书并重载 Nginx,全程自动。
步骤 1:安装 Nginx 插件
验证插件可用:
步骤 2:获取并安装证书
这条命令一次完成:
- 通过 Nginx 处理 ACME 验证
- 下载证书
- 自动更新 Nginx 配置添加 SSL 指令
- 重载 Nginx
步骤 3:测试自动续期
续期配置显示:
无需钩子、无需修改配置、无需指定 webroot 路径。
优点:
- ✅ 零停机
- ✅ 无需手动修改 Nginx 配置 — Certbot 自动管理 SSL 指令
- ✅ 后续维护最简单 — 一条命令搞定一切
- 自动处理 ACME 验证路径
缺点:
- Certbot 会修改你的 Nginx 配置文件(添加
ssl_certificate、ssl_certificate_key等指令)— 如果你有复杂的自定义配置,建议检查修改内容 - 需要安装
certbot-nginx插件包
适用场景: 大多数生产环境的推荐方案,除非你有特殊原因需要手动管理 Nginx 配置。
3.5 三种模式对比
| 特性 | Standalone | Webroot | Nginx 插件 |
| 续期时停机 | ⚠️ 10–30 秒 | ✅ 零 | ✅ 零 |
| 需要停止 Nginx? | 是 | 否 | 否 |
| 需要修改 Nginx 配置? | 不需要 | 需要(ACME location 块) | 不需要(自动管理) |
| 自动配置 SSL | 否 | 否 | 是 |
| 需要 pre/post 钩子? | 是 | 否 | 否 |
| 复杂度 | 低 | 中 | 最低 |
| 适用场景 | 开发/测试 | 需要完全配置控制 | 大多数生产站点 |
3.6 配置自动续期(Cron/Systemd)
大多数系统上,Certbot 安装时会自动创建 systemd 定时器或 cron 任务。验证:
如果都不存在,手动创建 cron 任务:
测试
应看到输出:The dry run was successful.
⚠️ 重要提示:
如果使用 Standalone 模式,确保续期配置包含 pre/post 钩子,或在 cron 命令中添加 –pre-hook 和 –post-hook。否则 Certbot 会因 80 端口被占用而失败。
四、第二部分:DigiCert 用户 — 在 EC2 上实现自动续期
DigiCert 是商业付费证书提供商,支持更强的验证选项(OV/EV)。虽然没有 Let’s Encrypt 的免费 ACME 基础设施,但自动化续期完全可以实现。
DigiCert 通过 CertCentral 平台支持 ACME 协议。这意味着可以使用与 Let’s Encrypt 相同的 Certbot 客户端 — 只需指向 DigiCert 的 ACME 服务器。
前置条件
- DigiCert CertCentral 账户
- 从 CertCentral 获取 ACME 目录 URL(Settings → ACME Directory URLs)
- 外部账户绑定(EAB)密钥对:KID + HMAC Key(从 CertCentral 获取)
步骤 1:向 DigiCert ACME 服务器注册
步骤 2:获取证书(三种模式均可)
Standalone
Webroot
Nginx 插件
步骤 3:自动续期方式完全相同
Certbot 会在续期配置中保存 ACME 服务器 URL,certbot renew 会自动与 DigiCert 服务器通信。
ℹ️ 注意:
DigiCert ACME 支持 HTTP-01 和 DNS-01 验证。Webroot 模式的 Nginx 配置要求(ACME location 块等)同样适用。
五、总结
本文针对 SSL/TLS 证书有效期即将大幅缩短的趋势,提供了在 亚马逊云科技 EC2 + Nginx 环境下实现证书自动续期的完整方案,且基于Let’s Encrypt证书介绍了 Certbot 的三种模式:Standalone(最简单但有短暂停机)、Webroot(零停机,需手动配置 ACME 路径)、Nginx 插件(零停机且全自动,推荐大多数生产环境使用),并说明了如何通过 Cron 或 Systemd 定时器实现自动续期。随着2029年证书有效期缩至47天,自动化管理已从可选变为必选,企业应根据自身架构和预算尽早落地。
➡️ 下一步行动:
相关产品:
- Amazon EC2 — 安全且可调整大小的计算容量
相关文章:
- 智能体驱动变革:让智能体成为测试第一性 之三 用 Web Bot Auth 为 AgentCore Browser Tool 打造可信身份
- Dify集成Amazon Bedrock AgentCore Browser 实现更强大的信息获取和分析能力
- JoyCastle 素材资产智能化之路:基于 Amazon Nova Multimodal Embeddings 的广告素材管理实践
- 在 AWS 上实现 DolphinScheduler 工作流的自动化跨环境部署
- 告别 Ingress-NGINX:用 Amazon Load Balancer Controller Gateway API 实现更强大的流量管理
*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。
本篇作者
AWS 架构师中心:云端创新的引领者探索 AWS 架构师中心,获取经实战验证的最佳实践与架构指南,助您高效构建安全、可靠的云上应用 |
![]() |

