请求私有 PKI 证书 - AWS Certificate Manager

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

请求私有 PKI 证书

如果您有权访问由 AWS 私有 CA 创建的现有私有证书颁发机构,则 ACM 可以申请适合在您的私有 PKI 中使用的证书。CA 可能位于您的账户中,也可能由其他账户与您共享。有关创建私有证书颁发机构的信息,请参阅创建私有证书颁发机构

默认情况下,私有 CA 签署的证书不受信任,ACM 不支持对这些证书进行任何形式的验证。因此,管理员必须采取措施,将证书安装到您组织的客户端信任存储中。

私有 ACM 证书遵循 X.509 标准,并具有以下限制:

  • 名称:必须使用符合 DNS 的主题名称。有关更多信息,请参阅 域名

  • 算法:对于加密,证书私有密钥算法必须是 2048 位 RSA、256 位 ECDSA 或 384 位 ECDSA。

    注意

    指定的签名算法系列(RSA 或 ECDSA)必须与 CA 密钥的算法系列匹配。

  • 有效期:每个证书的有效期为 13 个月(395 天)。签署的私有证书颁发机构证书的结束日期必须晚于请求的证书结束日期,否则证书请求将失败。

  • 续订:ACM 会在 11 个月后尝试自动续订私有证书。

用于签署终端实体证书的私有证书颁发机构受其自身限制:

  • 证书颁发机构的状态必须为“活跃”。

  • 证书颁发机构私有密钥算法必须是 RSA 2048 或 RSA 4096。

注意

与公开受信任的证书不同,由私有 CA 签署的证书不需要验证。

配置对私有 CA 的访问

在以下两种情况下,您可以使用 AWS 私有 CA 对 ACM 证书进行签名:

  • 单一账户:签名 CA 和颁发的 ACM 证书位于同一 AWS 账户中。

    要启用单账户颁发和续订,AWS 私有 CA 管理员必须向 ACM 服务主体授予创建、检索和列出证书的权限。这是使用 AWS 私有 CA API 操作 CreatePermission 或 AWS CLI 命令 create-permission 实现的。账户拥有者将这些权限分配给负责颁发证书的 IAM 用户、组或角色。

  • 跨账户:签名 CA 和颁发的 ACM 证书位于不同 AWS 账户中,并且已向证书所在的账户授予对 CA 的访问权限。

    要启用跨账户颁发和续订,AWS 私有 CA 管理员必须使用 AWS 私有 CA API 操作 PutPolicy,或使用 AWS CLI 命令 put-policy,将基于资源的策略附加到 CA。该策略指定其他账户中允许对 CA 进行有限访问的主体。有关更多信息,请参阅将基于资源的策略用于 ACM Private CA

    跨账户方案还要求 ACM 设置服务关联角色 (SLR),以便作为主体与 PCA 策略进行交互。ACM 在颁发第一个证书时自动创建 SLR。

    ACM 可能会提示您,它无法确定您的账户中是否存在 SLR。如果所需的 iam:GetRole 权限已被授予您账户的 ACM SLR,则在创建 SLR 后不会再发出提示。如果提示再次发生,那么您或您的账户管理员可能需要授予 iam:GetRole 访问 ACM 的权限,或者将您的账户与 ACM 托管策略 AWSCertificateManagerFullAccess 关联。

    有关更多信息,请参阅将服务相关角色用于 ACM

重要

您的 ACM 证书必须主动与受支持的 AWS 服务关联,然后才能自动续订。有关 ACM 支持的资源的信息,请参阅 与 AWS Certificate Manager 集成的服务

使用 ACM 控制台请求私有 PKI 证书

  1. 登录AWS管理控制台并通过以下网址打开 ACM 控制台:https://console.aws.amazon.com/acm/home

    选择请求证书

  2. Request certificate(请求证书)页面上,选择 Request a private certificate(请求私有证书)和 Next(下一步)以继续。

  3. Certificate authority details(证书颁发机构详细信息)部分,单击 Certificate authority(证书颁发机构)菜单,然后选择其中一个可用的私有 CA。如果 CA 是从另一个账户共享的,则 ARN 的前面包含所有权信息。

    此时将显示有关 CA 的详细信息,以帮助您验证选择了正确的 CA:

    • 所有者

    • 类型

    • 公用名(CN)

    • 组织 (O)

    • 组织部门(OU)

    • 国家/地区名称 (C)

    • 州或省

    • 所在地名称

  4. Domain names(域名)部分,键入您的域名。您可以使用完全限定域名 (FQDN)(例如 www.example.com),或者裸域名或顶点域名(例如 example.com)。您还可以在最左侧位置使用星号 (*) 作为通配符来保护同一域中的多个站点名称。例如,*.example.com 可以保护 corp.example.comimages.example.com。通配符名称将显示在 ACM 证书的 Subject(主题)字段和 Subject Alternative Name(主题替代名称)扩展中。

    注意

    请求通配符证书时,星号 (*) 必须位于域名的最左侧位置,而且只能保护一个子域级别。例如,*.example.com 可以保护 login.example.comtest.example.com,但不能保护 test.login.example.com。另请注意,*.example.com 保护 example.com 的子域,而不保护裸域或顶点域 (example.com)。要同时保护二者,请参阅下一个步骤

    或者,选择 Add another name to this certificate(向此证书添加另一个名称),然后在文本框中键入名称。这对于同时验证裸域或顶点域(例如 example.com)及其子域(例如 *.example.com)非常有用。

  5. Key algorithm(密钥算法)部分中,选择三种可用算法之一:

    • RSA 2048(默认)

    • ECDSA P 256

    • ECDSA P 384

    有关帮助您选择算法的信息,请参阅 密钥算法

  6. Tags(标签)选择中,您可以选择为证书添加标签。标签是键值对,用作标识和组织AWS资源的元数据。有关 ACM 标签参数的列表以及有关如何在创建证书后向证书添加标签的说明,请参阅 标记 AWS Certificate Manager 证书

  7. Certificate renewal permissions(证书续订权限)部分,确认有关证书续订权限的通知。这些权限允许自动续订使用所选 CA 签署的私有 PKI 证书。有关更多信息,请参阅将服务相关角色用于 ACM

  8. 提供所有必需信息后,选择 Request(请求)。控制台将返回证书列表,您可以在其中查看新证书。

    注意

    根据您对列表排序的方式,您要查找的证书可能不会立即可见。您可以点击右侧的黑色三角形来更改顺序。您还可以使用右上角的页码浏览多页证书。

使用 CLI 请求私有 PKI 证书

使用 request-certificate 命令在 ACM 中请求私有证书。

注意

当您请求由 AWS Private CA 中的 CA 签名的私有 PKI 证书时,指定的签名算法集(RSA 或 ECDSA)必须与 CA 的私有密钥的算法集匹配。

aws acm request-certificate \ --domain-name www.example.com \ --idempotency-token 12563 \ --certificate-authority-arn arn:aws:acm-pca:region:account:\ certificate-authority/CA_ID

此命令输出新私有证书的 Amazon Resource Name (ARN)。

{ "CertificateArn": "arn:aws:acm:region:account:certificate/certificate_ID" }

在大多数情况下,ACM 会在您首次使用共享 CA 时自动将服务关联角色 (SLR) 附加到您的账户。SLR 允许自动续订您颁发的终端实体证书。要检查 SLR 是否存在,可使用以下命令查询 IAM:

aws iam get-role --role-name AWSServiceRoleForCertificateManager

如果存在 SLR,命令输出应类似如下所示:

{ "Role":{ "Path":"/aws-service-role/acm.amazonaws.com/", "RoleName":"AWSServiceRoleForCertificateManager", "RoleId":"AAAAAAA0000000BBBBBBB", "Arn":"arn:aws:iam::{account_no}:role/aws-service-role/acm.amazonaws.com/AWSServiceRoleForCertificateManager", "CreateDate":"2020-08-01T23:10:41Z", "AssumeRolePolicyDocument":{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"acm.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }, "Description":"SLR for ACM Service for accessing cross-account Private CA", "MaxSessionDuration":3600, "RoleLastUsed":{ "LastUsedDate":"2020-08-01T23:11:04Z", "Region":"ap-southeast-1" } } }

如果缺少 SLR,请参阅将服务关联角色用于 ACM