在私有 PKI 中续订证书 - Amazon Certificate Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

在私有 PKI 中续订证书

由 Amazon Private CA 中的私有 CA 签名的 ACM 证书符合条件进行托管续订。与公开受信任 ACM 证书不同,私有 PKI 的证书不需要验证。当管理员在客户端信任存储区中安装相应的根 CA 证书时,就会建立信任。

注意

只有使用 ACM 控制台或 ACM API 的 RequestCertificate 操作获得的证书才符合托管续订条件。使用 Amazon Private CA API 的 IssueCertificate 操作直接从 Amazon Private CA 颁发的证书不由 ACM 管理。

当托管式证书还剩 60 天过期时,ACM 会自动尝试续订。这包括手动导出和安装的证书(例如,在本地数据中心中)。客户也可以随时使用 ACM API 的 RenewCertificate 操作强制续订。有关强制续订的 Java 实现示例,请参阅 续订证书

续订后,证书部署到服务的方式有如下几种:

自动导出已续订的证书

以下过程提供了一个示例解决方案,用于在 ACM 续订私有 PKI 证书时自动导出这些证书。此示例仅从 ACM 中导出证书及其私有密钥;导出后,证书仍必须安装在其目标设备上。

使用控制台自动导出证书

  1. 按照《Amazon Lambda 开发人员指南》中的步骤操作,创建并配置调用 ACM 导出 API 的 Lambda 函数。

    1. 创建一个 Lambda 函数

    2. 为您的函数创建一个 Lambda 执行角色并添加以下信任策略。该策略将向函数中的代码授予调用 ACM API 的 ExportCertificate 操作,从而检索已续订的证书和私有密钥的权限。

      { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"acm:ExportCertificate", "Resource":"*" } ] }
    3. 将应用程序代码添加到函数中,例如以下 Python 语言示例。此代码会检查将触发函数调用 ExportCertificate 操作的事件。有关更多信息,请参阅使用 Python 构建 Lambda 函数

      import json import boto3 acm = boto3.client('acm') passphrase = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00' def lambda_handler(event, context): context.log("Incoming Event : " + json.dumps(event) + "\n"); certificateArn = event['resources'][0]; context.log("Renewed Certificate ARN : " + certificateArn + "\n"); description = event['detail']['eventDescription'][0]['latestDescription']; if "completed the renewal" in description: response = acm.export_certificate(CertificateArn=certificateArn,Passphrase=passphrase) certificate = response['Certificate'] certificateChain = response['CertificateChain'] encrPrivateKey = response['PrivateKey'] context.log("Certificate : " + certificate + "\n"); context.log("Certificate Chain : " + certificateChain + "\n"); context.log("Encrypted Private Key : " + encrPrivateKey + "\n"); #TODO Install the private key, cert and chain to where it will be consumed return { 'statusCode': 200, }
  2. 在 Amazon EventBridge 中创建一条规则以侦听 ACM 运行状况事件,并在检测到相关事件时调用您的 Lambda 函数。ACM 每次尝试续订证书时都写入一个 Amazon Health 事件。有关这些通知的更多信息,请参阅 使用 Personal Health Dashboard (PHD) 检查状态

    通过添加以下事件模式来配置规则。

    { "source":[ "aws.health" ], "detail-type":[ "AWS Health Event" ], "detail":{ "service":[ "ACM" ], "eventTypeCategory":[ "scheduledChange" ], "eventTypeCode":[ "AWS_ACM_RENEWAL_STATE_CHANGE" ] }, "resources":[ "arn:aws:acm:region:account:certificate/certificate_ID" ] }
  3. 通过在目标系统上手动安装证书来完成续订过程。

测试私有 PKI 证书的托管式续订

您可以使用 ACM API 或 Amazon CLI 手动测试 ACM 托管续订工作流的配置。通过这样做,您可以确认您的证书将在过期前由 ACM 自动续订。

注意

您只能测试由 Amazon Private CA 颁发的证书的续订。

当您使用下面描述的 API 操作或 CLI 命令时,ACM 会尝试续订证书。如果续订成功,ACM 会更新管理控制台或 API 输出中显示的证书元数据。如果证书与 ACM 集成服务关联,则会部署新证书并在 Amazon CloudWatch Events 中生成续订事件。如果续订失败,ACM 将返回错误并建议采取补救措施。(您可以使用 describe-certificate 命令查看此信息。) 如果证书不是通过集成服务部署的,您仍然需要将其导出并手动将其安装到资源上。

重要

要使用 ACM 续订您的 Amazon Private CA 证书,您必须先向 ACM 服务委托人授予执行此操作的权限。有关更多信息,请参阅将证书续订权限分配给 ACM

手动测试证书续订 (Amazon CLI)

  1. 使用 renew-certificate 证书续订导出的私有证书。

    aws acm renew-certificate \ --certificate-arn arn:aws:acm:region:account:certificate/certificate_ID
  2. 然后,使用 describe-certificate 命令确认已更新该证书的续订详细信息。

    aws acm describe-certificate \ --certificate-arn arn:aws:acm:region:account:certificate/certificate_ID

手动测试证书续订 (ACM API)