AWS Certificate Manager
提供 SSL/TLS 证书的配置、管理和自动续期服务,通过免费证书实现 CloudFront 和 ALB 的 HTTPS 化
概述
AWS Certificate Manager (ACM) 是一项提供 SSL/TLS 证书发行、管理、部署和自动续期的服务。ACM 发行的公有证书免费,可一键关联到 CloudFront、Elastic Load Balancing、API Gateway 等 AWS 服务。通过 DNS 验证或电子邮件验证确认域名所有权后,证书将自动发行,并在到期前自动续期,从而防止因证书过期导致的服务中断。
证书发行流程与 DNS 验证机制
使用 ACM 发行公有证书时,首先指定目标域名(例如 example.com、*.example.com)创建请求。为证明域名所有权,需选择 DNS 验证或电子邮件验证,强烈推荐使用 DNS 验证。DNS 验证只需将 ACM 指定的 CNAME 记录添加到域名的 DNS 中即可完成验证,只要该记录存在,证书的自动续期也会自动进行。如果使用 Route 53,可从 ACM 控制台一键添加 CNAME 记录。电子邮件验证通过向域名管理员邮箱发送确认邮件的方式进行,每次续期都需要邮件审批,运维负担较高。发行通配符证书(*.example.com)后,无需为每个子域名单独管理证书。ACM 发行的证书由 Amazon Trust Services 作为证书颁发机构 (CA) 签名,受所有主流浏览器和操作系统信任。虽然 Let's Encrypt 也提供免费证书,但 ACM 在与 AWS 服务的集成和自动续期的可靠性方面更具优势。
向 AWS 服务部署证书与自动续期运维
ACM 发行的证书可关联到 CloudFront 分配、Application Load Balancer (ALB)、Network Load Balancer (NLB)、API Gateway 自定义域名使用。CloudFront 使用的证书必须在 us-east-1 区域发行,这是常见的注意事项。ALB 和 NLB 的标准配置是将证书关联到侦听器,在负载均衡器上进行 HTTPS 终止。一个侦听器可关联多个证书,通过 SNI (Server Name Indication) 自动选择适当的证书。SSL 证书相关书籍 (Amazon) 中详细介绍了 TLS 机制和证书管理最佳实践。自动续期在证书到期前 60 天开始,如果 DNS 验证的 CNAME 记录配置正确,续期将无需人工干预自动完成。续期状态可通过 ACM 控制台或 EventBridge 事件确认,建议构建续期失败时的告警机制。
私有证书与 EC2 上的证书使用
使用 ACM Private CA(证书颁发机构)可以发行组织内部使用的私有证书。适用于微服务间的 mTLS(双向 TLS)认证、内部系统的 HTTPS 化、IoT 设备的证书管理等公有证书无法覆盖的场景。运营私有 CA 会产生月费,但可集中管理大量证书。EC2 实例上的 Web 服务器(Nginx、Apache)无法直接使用 ACM 证书。如需在 EC2 上终止 HTTPS,需要在前端放置 ALB 并将 ACM 证书关联到 ALB,或使用 Nitro Enclaves 的 ACM 集成。在 CloudFormation 中管理证书时,可通过 AWS::CertificateManager::Certificate 资源声明式定义证书,但 DNS 验证的 CNAME 记录创建需另外定义为 Route 53 资源。跨堆栈共享证书 ARN 时,导出到 SSM Parameter Store 可方便跨区域引用。