AWS Certificate Manager现在支持导出公共证书
作者:Pravin Nair, Chandan Kundapur和Santosh Vallurupalli
发布日期:2025年6月30日
分类:AWS证书管理器、专家级(400)、安全身份与合规、技术指南
2025年7月2日更新:本文末尾新增FAQ章节,包含对证书有效期变化及相关定价的回应。
AWS证书管理器(ACM)简化了为AWS服务及本地混合应用程序配置、管理和部署公共及私有TLS证书的流程。为进一步提升ACM在不同工作负载中的灵活性,我们推出了一项强大的新功能:ACM可导出公共证书。此功能允许从ACM导出公共TLS证书及相关私钥,用于保护Amazon EC2实例、Amazon EKS Pod、本地服务器或其他云服务商服务器上的工作负载。该功能支持在AWS账户中新创建的公共证书。
本文将展示如何跨多样化基础设施自动化导出和分发公共可导出证书。我们将逐步引导创建自动化工作流,将证书自动交付至混合环境中的EC2实例和虚拟机。探讨自动化工作原理、优势,并提供入门指南。此外,还将介绍如何利用与Amazon EventBridge的集成,在证书签发或续期时触发自动导出,简化异构环境中的证书部署,显著降低管理开销。
背景:ACM与证书管理
ACM是一项托管服务,消除了购买、上传和续期TLS证书的复杂性。它为与ACM集成的AWS服务(如Elastic Load Balancing (ELB)、Amazon CloudFront和Amazon API Gateway)免费提供公共证书。ACM还支持导入第三方公共证书并通过AWS私有证书颁发机构签发私有证书。在此版本之前,ACM公共证书专为与ACM集成的AWS服务(如CloudFront)设计,为这些服务提供无缝TLS加密。对于涉及第三方内容分发网络(CDN)或在EC2实例上终止TLS的工作负载,客户通常从其他提供商获取证书或将其导入ACM进行集中管理。客户反馈希望将ACM的简便性和可扩展性扩展到更广泛的环境。新的ACM可导出公共证书功能满足了这一需求,使您能够导出ACM管理的公共证书用于自定义工作负载,同时保持集中管理和自动续期。
通过ACM,您现在可以请求公共证书、验证域名所有权,并导出证书用于终止TLS的软件(如Apache、NGINX或Microsoft IIS)。ACM处理证书续期,降低了过期导致应用中断的风险。
工作原理:ACM公共证书签发与续期
要使用ACM可导出公共证书,需了解如何利用签发和续期过程自动化证书管理。本节描述这些过程及其自动化能力,这对部署和维护证书至关重要。
ACM公共证书签发
签发ACM公共证书包含以下步骤:
- 请求证书:在ACM的AWS管理控制台、AWS命令行界面(CLI)或API中,通过指定要保护的域名(例如example.com或*.example.com)发起证书请求。
- 验证域名所有权:ACM要求证明对域名的控制权。如果域名托管在Amazon Route 53上,可请求ACM验证域名所有权。对于AWS外托管的域名,可使用DNS验证(添加CNAME记录)或电子邮件验证(回复发送至域名联系人的邮件)。
- 证书签发:域名所有权验证后,ACM签发证书,包含公钥、私钥和证书链。
- 将证书与集成AWS服务关联:参见与ACM集成的服务了解如何将证书与集成AWS服务关联。
- 导出证书:通过新功能,您现在可以使用ACM控制台、AWS CLI或API导出公共证书、私钥和证书链,用于未与ACM集成的服务器。
- 绑定到应用:将导出的证书安装到服务器(如Apache或NGINX)以启用TLS终止。
随着此新功能的推出,您现在可以控制在ACM中创建的公共证书的未来可导出性。
要创建可导出公共证书,请使用ACM控制台创建新公共证书。在ACM控制台中选择请求证书,在“请求公共证书”页面下的“允许导出”部分选择启用导出。如果选择禁用导出,此证书的私钥将不允许从ACM导出,此设置在证书签发后不可更改。
创建证书并选择“启用导出”选项完成域名所有权验证后,您可以继续进行导出过程,如图2所示。要导出证书,从证书列表中选择它,选择更多操作,然后选择导出。
ACM公共证书续期
ACM自动化证书续期过程,包括:
- 续期启动:ACM在证书过期前60天自动启动续期。
- 域名重新验证:ACM使用与初始签发相同的方法(DNS或电子邮件)重新验证域名所有权。
- 证书更新:重新验证成功后,ACM签发具有相同Amazon资源名称(ARN)的新证书,并更新有效期。
当ACM中的证书续期时,服务会自动发送EventBridge事件通知您新证书可用。如果续期失败,ACM会向AWS健康仪表板和EventBridge发送通知。要了解这些证书事件,您可以创建EventBridge规则来监控特定证书相关事件。可以配置这些规则将通知发送到Amazon Simple Notification Service (SNS)主题,以便相关方及时接收证书状态更新。
新增EventBridge模式字段:ACM证书成功续期后,ACM证书可用事件现在包含一个可导出字段,用TRUE|FALSE指示公共证书是否准备好导出。
|
|
导出和更新:您可以导出续期后的证书,并手动更新到服务器,或使用EventBridge目标(如由EventBridge规则触发的AWS Systems Manager自动化文档)进行更新。更多信息请参见Amazon EventBridge中的事件总线目标。
您可以使用EventBridge规则监控特定事件并将其路由到一个或多个目标(如Amazon SNS主题、AWS Lambda函数或其他AWS服务)进行处理。例如,当由于DNS配置问题导致域名验证失败时,ACM会生成“ACM证书续期操作所需”EventBridge事件。通过创建以SNS主题为目标的EventBridge规则,您可以订阅接收电子邮件警报并采取必要的纠正措施。
使用EventBridge自动化部署续期证书
证书续期过程有助于确保TLS证书保持有效而无需手动干预,但跨多样化环境更新证书仍需要努力。当ACM续期证书时,它会生成一个EventBridge事件。您可以配置EventBridge规则基于此事件触发目标,例如:
- 发送通知:将事件路由到Amazon SNS,向管理员发送电子邮件或SMS通知。
- 自动化证书部署:触发Lambda函数或Systems Manager自动化文档,使用ACM API检索续期后的证书并将其更新到服务器。
- 监控续期失败:基于ACM证书续期失败事件配置警报。这些事件可以直接路由到通知通道,通知您有关域名验证错误等问题。
要设置此功能,请创建一个EventBridge规则来匹配ACM续期事件,指定一个目标(如SNS主题或Lambda函数)。此自动化最小化了手动干预,有助于促进基础设施中无缝证书更新。
解决方案概述
在本节中,我们描述两个工作流。第一个演示自动化过程,用于导出现有ACM公共证书并将其安装到目标EC2实例或虚拟机上。第二个工作流在ACM自动续期公共证书并可用时触发,随后在下游EC2实例和虚拟机上更新这些证书。虽然此解决方案使用EC2实例和虚拟机作为目标系统,但相同方法可应用于跨各种类型系统大规模刷新公共证书。
先决条件
要将此自动化公共证书导出和更新过程扩展到:
- 注册EC2实例:按照使用Systems Manager管理EC2实例中的说明操作。
- 注册本地和其他云环境的虚拟机:按照使用Systems Manager管理混合和多云环境中的节点中的说明操作。
向要部署续期证书的EC2实例和虚拟机添加TargetTagKey标签。自动化使用这些标签识别目标实例。
ExportCertificate API操作需要证书密码短语。为保持安全最佳实践,建议使用密码库以加密形式存储密码,而不是明文存储。我们的实现使用AWS Secrets Manager安全存储这些敏感凭据。解决方案还使用Amazon DynamoDB维护证书元数据,包括对存储在Secrets Manager中相应密钥名称的引用。为增强安全性,DynamoDB表的数据使用AWS密钥管理服务(KMS)自动静态加密。
ACM证书导出
图3所示的工作流演示了通过API驱动过程导出现有公共ACM证书并部署到下游系统的自动化过程。
过程开始时,用户向API Gateway端点发出请求,提供基本参数,包括CertificateArn以标识要导出的证书,CertName用于证书标识,以及TargetTagKey和TargetTagValue用于标识要安装此证书的目标EC2实例。以下是发送到API Gateway的有效负载示例:
|
|
收到请求后,API Gateway触发一个AWS Step Functions工作流,包含多个协调状态。
初始状态执行名为acm-Export的Lambda函数,该函数为私钥生成密码短语。
acm-Export Lambda函数还将生成的密码短语安全地存储在Secrets Manager中,并使用生成的密码短语导出ACM证书。
完成acm-Export函数后,Step Functions工作流调用Lambda ssm-run函数。
此函数执行两个操作:检查证书在DynamoDB(作为库存跟踪系统)中的存在性并管理记录保存。当函数遇到现有certificateARN时,它会使用当前CertExpiryDate和LastExportedDate时间戳值更新记录。对于首次导出的证书,如果不存在匹配条目,Lambda函数会在DynamoDB中创建新记录。此新记录捕获证书的元数据,包括其详细信息和跟踪信息。图4显示了此元数据在控制台DynamoDB表条目中的结构方式。
在DynamoDB中进行元数据验证步骤后,Lambda函数还启动运行名为Install-ACMCertificate的自定义Systems Manager文档。此文档处理新导出的公共证书到指定EC2实例的安装。相同的Systems Manager文档可用于证书安装或更新到本地服务器,提供证书部署的灵活性。
当Systems Manager文档执行成功时,它将新导出的公共证书部署到匹配TargetTagKey的EC2实例。默认情况下,在Linux服务器上,证书存储在/etc/ssl/certs和/etc/ssl/private中,但这些路径可以在Systems Manager文档中自定义。
成功运行此Systems Manager文档后,Step Functions工作流进入其下一个状态,触发另一个名为Statuscheck的Lambda函数。此函数监控先前启动的Systems Manager文档的执行状态。Step Functions工作流在确认证书在目标EC2实例上成功安装后结束其执行。
ACM证书续期和导出
当证书距离过期60天内时,ACM自动开始续期过程。当ACM成功完成证书续期时,它会在EventBridge中生成一个事件,如下例所示:
|
|
图5所示的工作流展示了一个自动化系统,用于使用API驱动过程导出现有公共ACM证书并将其部署到下游系统。
解决方案使用一个EventBridge规则,监视证书续期通知并触发acm-renew Lambda函数作为响应。函数开始执行时从ACM事件接收证书ARN。使用此ARN作为查找键,它查询DynamoDB表以检索关联的证书元数据。从此查询中,它提取基本证书详细信息,包括证书名称和TargetTag键值对,这些标识哪些资源需要更新的证书。这些详细信息对于后续证书部署过程是必需的,并有助于确保更新应用到正确的系统。
然后将此信息格式化为有效负载并用于触发Step Functions工作流。此Step Functions工作流遵循ACM证书导出部分描述的相同过程。
步骤3至9遵循ACM证书导出部分描述的过程。步骤9成功完成后,Step Functions工作流结束其执行。此时,续期后的公共证书已成功安装到目标EC2实例上,完成了自动化证书导出和安装过程。
有关下载解决方案、执行它、验证证书导出并将其部署到AWS账户的详细说明可在GitHub上获取。
定价和可用性
ACM可导出公共证书在AWS商业区域、AWS GovCloud(美国)区域和中国区域可用,并遵循按需付费定价模式,无前期承诺。与ACM集成的AWS服务(如ELB、CloudFront和API Gateway)的公共证书仍免费提供。详细定价请参见AWS证书管理器定价。
结论
ACM可导出公共证书功能使客户能够通过统一、托管的证书解决方案保护多样化工作负载。通过启用EC2、容器、本地服务器和其他云提供商的证书导出,ACM简化了TLS管理,同时提供集中控制、自动续期和成本效益定价。立即在ACM控制台中探索此功能,简化您的证书管理工作流。
常见问题解答
ACM会支持公共证书的较短有效期吗?
ACM将在未来几个月内提供较短有效期的公共证书,以符合证书颁发机构/浏览器论坛(CA/Browser Forum)对TLS证书的要求。ACM已经提供自动处理证书续期和通知新证书准备部署的能力。Amazon Trust Services (ATS)是CA/Browser Forum的积极参与者,该论坛设定了公共信任TLS证书的标准。为满足CA/Browser Forum要求,我们将按以下计划最低限度强制执行TLS证书的最大证书生命周期:
- 从今天到2026年3月11日,签发的TLS证书的最大有效期为398天。
- 从2026年3月1日起,签发的TLS证书的最大有效期为200天。
- 从2027年3月1日起,签发的TLS证书的最大有效期为100天。
- 从2029年3月1日起,签发的TLS证书的最大有效期为47天。
较短有效期证书的定价如何?
如果您使用ACM的可导出公共证书,我们理解您对随着最大证书有效期变化可能带来的成本增加的担忧。AWS致力于维持通过ACM签发证书的公平定价。随着行业标准的变化,我们计划相应调整定价结构,旨在使证书的年成本与当前费率保持一致。我们将在定价变更生效前提供进一步详细信息。
如果您对此帖子有反馈,请在下面的评论部分提交评论。如果您对此帖子有疑问,请联系AWS支持。