AWS Certificate Manager now supports exporting public certificates
作者:Pravin Nair, Chandan Kundapur 和 Santosh Vallurupalli
发布日期:2025年6月30日
分类:AWS Certificate Manager, 专家(400), 安全、身份与合规, 技术指南
永久链接
评论
分享
2025年7月2日更新:我们在文末新增了FAQ章节,包含对证书有效期变更及相关定价的回应。
AWS Certificate Manager(ACM)简化了为AWS服务及本地混合应用程序配置、管理和部署公有及私有TLS证书的流程。为了进一步提升ACM在不同工作负载中的灵活性,我们推出了一项强大的新功能:ACM可导出公有证书。您可以通过此功能从ACM导出公有TLS证书及关联私钥,用于保护Amazon Elastic Compute Cloud(Amazon EC2)实例、Amazon Elastic Kubernetes Service(Amazon EKS)Pod、本地服务器或其他云提供商服务器上的工作负载。该功能支持从您的AWS账户中新创建的公有证书。
本文我们将展示如何自动化导出公有可导出证书并将其分发到多样化基础设施中。我们将带您创建自动将证书交付到多个目标(包括EC2实例和混合环境中的虚拟机)的工作流。我们将探讨此自动化的工作原理、其优势,并提供分步指南。此外,我们还将探讨如何利用与Amazon EventBridge的集成,在证书签发或续期时触发自动证书导出,从而简化异构环境中的证书部署并显著减少管理开销。
背景:ACM与证书管理
ACM是一项托管服务,消除了购买、上传和续期TLS证书的复杂性。它为与ACM集成的AWS服务(如Elastic Load Balancing(ELB)、Amazon CloudFront和Amazon API Gateway)免费提供公有证书。ACM还支持导入第三方公有证书并通过AWS Private Certificate Authority签发私有证书。在此版本之前,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命令行界面(AWS CLI)或API中,通过指定要保护的域名(例如example.com或*.example.com)发起证书请求。
- 验证域名所有权:ACM要求您证明对域名的控制权。如果域名托管在Amazon Route 53上,您可以请求ACM验证域名所有权。对于托管在AWS外的域名,您可以使用DNS验证(添加CNAME记录)或电子邮件验证(回复发送给域名联系人的邮件)。
- 证书签发:域名所有权验证通过后,ACM签发证书,其中包括公钥、私钥和证书链。
- 将证书与集成AWS服务关联:有关将证书与集成AWS服务关联的信息,请参阅与ACM集成的服务。
- 导出证书:通过新功能,您现在可以使用ACM控制台、AWS CLI或API导出公有证书、私钥和证书链,用于未与ACM集成的服务器。
- 绑定到应用程序:将导出的证书安装到您的服务器(例如Apache或NGINX)上以启用TLS终止。
随着此新功能的推出,您现在可以控制未来在ACM中创建的公有证书的可导出性。
要创建可导出的公有证书,请使用ACM控制台创建新的公有证书。首先,在ACM控制台中选择Request certificate,在Request public certificate页面中,在Allow export下选择Enable export。如果您选择Disable export,此证书的私钥将不允许从ACM导出,此设置在证书签发后不可更改。
选择Enable export选项创建证书并完成域名所有权验证后,您可以继续进行导出过程,如图2所示。要导出证书,请从证书列表中选择它,选择More actions,然后选择Export。
ACM公有证书续期
ACM自动化证书续期过程,包括:
- 续期启动:ACM在证书过期前60天自动启动续期。
- 域名重新验证:ACM使用与初始签发相同的方法(DNS或电子邮件)重新验证域名所有权。
- 证书更新:重新验证成功后,ACM签发具有相同Amazon资源名称(ARN)的新证书,并更新有效期。
当ACM中的证书续期时,服务会自动发送EventBridge事件通知您新证书可用。如果续期失败,ACM会向AWS Health Dashboard和EventBridge发送通知。要了解这些证书事件,您可以创建EventBridge规则来监控特定的证书相关事件。您可以配置这些规则将通知发送到Amazon Simple Notification Service(SNS)主题,以便相关方及时收到证书状态更新。
新的EventBridge模式字段:ACM证书成功续期后,ACM Certificate Available事件现在包含一个exportable字段,该字段用TRUE|FALSE指示公有证书是否准备好导出。
|
|
- 导出和更新:您可以手动导出续期后的证书并更新到服务器上,或使用EventBridge目标(如由EventBridge规则触发的AWS Systems Manager Automation文档)自动化此过程。更多信息请参阅Amazon EventBridge中的事件总线目标。
您可以使用EventBridge规则监控特定事件并将其路由到一个或多个目标(如Amazon SNS主题、AWS Lambda函数或其他AWS服务)进行处理。例如,当由于DNS配置问题导致域名验证失败时,ACM会生成ACM Certificate Renewal Action Required EventBridge事件。通过创建以SNS主题为目标的EventBridge规则,您可以订阅接收电子邮件警报并采取必要的纠正措施。
使用EventBridge自动化部署续期证书
证书续期过程有助于确保您的TLS证书保持有效而无需手动干预,但在多样化环境中更新证书仍需要投入精力。当ACM续期证书时,它会生成一个EventBridge事件。您可以配置EventBridge规则基于此事件触发目标,例如:
- 发送通知:将事件路由到Amazon SNS,向管理员发送电子邮件或SMS通知。
- 自动化证书部署:触发Lambda函数或Systems Manager Automation文档,使用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 Key Management Service(AWS KMS)自动静态加密。
ACM证书导出
图3所示的工作流演示了通过API驱动过程自动化导出现有公有ACM证书并将其部署到下游系统的过程。
该过程从用户向API Gateway端点发出请求开始,提供基本参数,包括用于标识要导出证书的CertificateArn、用于证书标识的CertName,以及用于标识要安装此证书的目标EC2实例的TargetTagKey和TargetTagValue。以下是发送到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(US)区域和中国区域可用,并遵循按需付费定价模式,无前期承诺。与ACM集成的AWS服务(如ELB、CloudFront和API Gateway)的公有证书仍然免费提供。有关详细定价,请参阅AWS Certificate Manager定价。
结论
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签发证书的公平定价。随着行业标准的变化,我们计划相应调整定价结构,旨在使证书的年成本与