

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

# 中的私有证书 AWS Certificate Manager
<a name="private-certificates.title"></a>

如果您有权访问由创建的现有私有 CA AWS 私有 CA， AWS Certificate Manager (ACM) 可以申请适合在您的私钥基础设施 (PKI) 中使用的证书。CA 可能位于您的账户中，也可能由其他账户与您共享。有关创建私有证书颁发机构的信息，请参阅[创建私有证书颁发机构](https://docs.aws.amazon.com/privateca/latest/userguide/create-CA.html)。

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

私有 ACM 证书遵循 X.509 标准，并具有以下限制：
+ **名称：**必须使用符合 DNS 的主题名称。有关更多信息，请参阅 [域名](acm-concepts.md#concept-dn)。
+ **算法：**对于加密，证书私有密钥算法必须是 2048 位 RSA、256 位 ECDSA 或 384 位 ECDSA。
**注意**  
指定的签名算法系列（RSA 或 ECDSA）必须与 CA 密钥的算法系列匹配。
+ **过期：**每个私有证书的有效期为 13 个月（395 天）。签署的私有证书颁发机构证书的结束日期必须晚于请求的证书结束日期，否则证书请求将失败。
**注意**  
私有证书的有效期比公有证书长。公共 ACM 证书的有效期为 198 天。有关公共证书的更多信息，请参阅[在中申请公共证书 AWS Certificate Manager](acm-public-certificates.md)。
+ **续订：**ACM 会在 11 个月后尝试自动续订私有证书。

用于签署终端实体证书的私有证书颁发机构受其自身限制：
+ 证书颁发机构的状态必须为“活跃”。

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

**Topics**
+ [

# 用于签署 ACM 私有证书的条件 AWS 私有 CA
](ca-access.md)
+ [

# 在中申请私有证书 AWS Certificate Manager
](gs-acm-request-private.md)
+ [

# 导出 AWS Certificate Manager 私有证书
](export-private.md)

# 用于签署 ACM 私有证书的条件 AWS 私有 CA
<a name="ca-access"></a>

在以下两种情况下 AWS 私有 CA ，您可以使用对 ACM 证书进行签名：
+ **单一账户**：签名 CA 和颁发的 AWS Certificate Manager （ACM）证书位于同一 AWS 账户中。

  要启用单账户颁发和续订， AWS 私有 CA 管理员必须向 ACM 服务主体授予创建、检索和列出证书的权限。这是使用 AWS 私有 CA API 操作[CreatePermission](https://docs.aws.amazon.com/privateca/latest/APIReference/API_CreatePermission.html)或 AWS CLI 命令[创建权限完成的](https://docs.aws.amazon.com/cli/latest/reference/acm-pca/create-permission.html)。账户拥有者将这些权限分配给负责颁发证书的 IAM 用户、组或角色。
+ **跨账户**：签名的 CA 和颁发的 ACM 证书位于不同的 AWS 账户中，并且证书所在的账户已被授予对 CA 的访问权限。

  [要启用跨账户签发和续订， AWS 私有 CA 管理员必须使用 AWS 私有 CA API 操作[PutPolicy](https://docs.aws.amazon.com/privateca/latest/APIReference/API_PutPolicy.html)或命令 put-policy 将基于资源的策略附加到 CA。 AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/acm-pca/put-policy.html)该策略指定其他账户中允许对 CA 进行有限访问的主体。有关更多信息，请参阅[将基于资源的策略用于 ACM Private CA](https://docs.aws.amazon.com/privateca/latest/userguide/pca-rbp.html)。

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

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

  有关更多信息，请参阅[将服务相关角色用于 ACM](https://docs.aws.amazon.com/acm/latest/userguide/acm-slr.html)。

**重要**  
您的 ACM 证书必须与支持的 AWS 服务主动关联，然后才能自动续订。有关 ACM 支持的资源的信息，请参阅 [与 ACM 集成的服务](acm-services.md)。

# 在中申请私有证书 AWS Certificate Manager
<a name="gs-acm-request-private"></a>

## 请求私有证书（控制台）
<a name="request-private-console"></a>

1. 登录 AWS 管理控制台并在[https://console.aws.amazon.com/acm/家](https://console.aws.amazon.com/acm/home)中打开 ACM 控制台。

   选择**请求证书**。

1. 在 **Request certificate**（请求证书）页面上，选择 **Request a private certificate**（请求私有证书）和 **Next**（下一步）以继续。

1. 在**证书颁发机构详细信息**部分，选择**证书颁发机构**菜单，然后选择一个可用的私有证书 CAs。如果 CA 是从另一个账户共享的，则 ARN 的前面包含所有权信息。

   此时将显示有关 CA 的详细信息，以帮助您验证选择了正确的 CA：
   + **所有者**
   + **Type**
   + **公用名（CN）**
   + **组织 (O)**
   + **组织部门（OU）**
   + **国家/地区名称 (C)**
   + **州或省**
   + **所在地名称**

1. 在 **Domain names**（域名）部分，键入您的域名。您可以使用完全限定域名 (FQDN)（例如 **www.example.com**），或者裸域名或顶点域名（例如 **example.com**）。您还可以在最左侧位置使用星号 (**\$1**) 作为通配符来保护同一域中的多个站点名称。例如，**\$1.example.com** 可以保护 **corp.example.com** 和 **images.example.com**。通配符名称将显示在 ACM 证书的 **Subject（主题）**字段和 **Subject Alternative Name（主题替代名称）**扩展中。
**注意**  
请求通配符证书时，星号 (**\$1**) 必须位于域名的最左侧位置，而且只能保护一个子域级别。例如，**\$1.example.com** 可以保护 **login.example.com** 和 **test.example.com**，但不能保护 **test.login.example.com**。另请注意，**\$1.example.com** *仅*保护 **example.com** 的子域，而不保护裸域或顶点域 (**example.com**)。要同时保护二者，请参阅下一个步骤

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

1. 在**密钥算法**部分中，选择一种算法。

   有关帮助您选择算法的信息，请参阅中的 AWS 博客文章《[如何评估和使用 ECDSA 证书](https://aws.amazon.com/blogs/security/how-to-evaluate-and-use-ecdsa-certificates-in-aws-certificate-manager/)》。 AWS Certificate Manager

1. 在 **Tags**（标签）部分中，您可以选择为证书添加标签。标签是键值对，用作识别和组织 AWS 资源的元数据。有关 ACM 标签参数的列表以及有关如何在创建证书后向证书添加标签的说明，请参阅 [为 AWS Certificate Manager 资源添加标签](tags.md)。

1. 在 **Certificate renewal permissions**（证书续订权限）部分，确认有关证书续订权限的通知。这些权限允许自动续订使用所选 CA 签署的私有 PKI 证书。有关更多信息，请参阅[将服务相关角色用于 ACM](https://docs.aws.amazon.com/acm/latest/userguide/acm-slr.html)。

1. 提供所有必需信息后，选择 **Request**（请求）。控制台将返回证书列表，您可以在其中查看新证书。
**注意**  
根据您对列表排序的方式，您要查找的证书可能不会立即可见。您可以点击右侧的黑色三角形来更改顺序。您还可以使用右上角的页码浏览多页证书。

## 请求私有证书（CLI）
<a name="request-private-cli"></a>

使用 [request-certificate](https://docs.aws.amazon.com/cli/latest/reference/acm/request-certificate.html) 命令在 ACM 中请求私有证书。

**注意**  
当您请求由 CA 签名的私有 PKI 证书时 AWS 私有 CA，指定的签名算法系列（RSA 或 ECDSA）必须与 CA 密钥的算法系列相匹配。

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

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

```
{
    "CertificateArn": "arn:aws:acm:Region:444455556666: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](https://docs.aws.amazon.com/acm/latest/userguide/acm-slr.html)。

# 导出 AWS Certificate Manager 私有证书
<a name="export-private"></a>

您可以导出由颁发的证书， AWS 私有 CA 以便在私有 PKI 环境中的任何地方使用。导出的文件包含证书、证书链和加密的私有密钥。此文件必须安全存储。有关的更多信息 AWS 私有 CA，请参阅[《AWS 私有证书颁发机构 用户指南》](https://docs.aws.amazon.com/privateca/latest/userguide/)。

**注意**  
如果要导出通过 ACM 颁发的公共证书，请参阅 [ACM 可导出的公共证书。](https://docs.aws.amazon.com/acm/latest/userguide/acm-exportable-certificates.html)

**Topics**
+ [

## 导出私有证书（控制台）
](#export-console)
+ [

## 导出私有证书 (CLI)
](#export-cli)

## 导出私有证书（控制台）
<a name="export-console"></a>

1. 登录 AWS 管理控制台并在[https://console.aws.amazon.com/acm/家](https://console.aws.amazon.com/acm/home)中打开 ACM 控制台。

1. 选择 **Certificate Manager**。

1. 选择要导出的证书的链接。

1. 选择**导出**。

1. 输入并确认私有密钥的密码。
**注意**  
创建密码短语时，您可以使用除 \$1、\$1 或 % 之外的任何 ASCII 字符。

1. 选择 **Generate PEM Encoding**。

1. 您可以将证书、证书链和加密密钥复制到内存中，或者为每个选择 **Export to a file **。

1. 选择**完成**。

## 导出私有证书 (CLI)
<a name="export-cli"></a>

使用 [export-certificate](https://docs.aws.amazon.com/cli/latest/reference/acm/export-certificate.html) 命令导出私有证书和私有密钥。运行命令时，您必须指定密码。为了提高安全性，请使用文件编辑器将密码短语存储在文件中，然后通过提供文件来提供密码短语。这样可以防止密码存储在命令历史记录中，并防止在您键入密码时其他人看到密码。

**注意**  
包含该密码的文件不得以行终止符结尾。您可以如下所示检查密码文件：  

```
$ file -k passphrase.txt
passphrase.txt: ASCII text, with no line terminators
```

以下示例将命令输出发送到 `jq` 以便应用 PEM 格式。

```
[Windows/Linux]
$ aws acm export-certificate \
     --certificate-arn arn:aws:acm:Region:444455556666:certificate/certificate_ID \
     --passphrase fileb://path-to-passphrase-file  \
     | jq -r '"\(.Certificate)\(.CertificateChain)\(.PrivateKey)"'
```

这会输出 base64 编码的 PEM 格式证书，还包含证书链和加密的私有密钥，如下面的简短示例所示。

```
-----BEGIN CERTIFICATE-----
MIIDTDCCAjSgAwIBAgIRANWuFpqA16g3IwStE3vVpTwwDQYJKoZIhvcNAQELBQAw
EzERMA8GA1UECgwIdHJvbG9sb2wwHhcNMTkwNzE5MTYxNTU1WhcNMjAwODE5MTcx
NTU1WjAXMRUwEwYDVQQDDAx3d3cuc3B1ZHMuaW8wggEiMA0GCSqGSIb3DQEBAQUA
...
8UNFQvNoo1VtICL4cwWOdLOkxpwkkKWtcEkQuHE1v5Vn6HpbfFmxkdPEasoDhthH
FFWIf4/+VOlbDLgjU4HgtmV4IJDtqM9rGOZ42eFYmmc3eQO0GmigBBwwXp3j6hoi
74YM+igvtILnbYkPYhY9qz8h7lHUmannS8j6YxmtpPY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIC8zCCAdugAwIBAgIRAM/jQ/6h2/MI1NYWX3dDaZswDQYJKoZIhvcNAQELBQAw
EzERMA8GA1UECgwIdHJvbG9sb2wwHhcNMTkwNjE5MTk0NTE2WhcNMjkwNjE5MjA0
NTE2WjATMREwDwYDVQQKDAh0cm9sb2xvbDCCASIwDQYJKoZIhvcNAQEBBQADggEP
...
j2PAOviqIXjwr08Zo/rTy/8m6LAsmm3LVVYKLyPdl+KB6M/+H93Z1/Bs8ERqqga/
6lfM6iw2JHtkW+q4WexvQSoqRXFhCZWbWPZTUpBS0d4/Y5q92S3iJLRa/JQ0d4U1
tWZyqJ2rj2RL+h7CE71XIAM//oHGcDDPaQBFD2DTisB/+ppGeDuB
-----END CERTIFICATE-----
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFKzBVBgkqhkiG9w0BBQ0wSDAnBgkqhkiG9w0BBQwwGgQUMrZb7kZJ8nTZg7aB
1zmaQh4vwloCAggAMB0GCWCGSAFlAwQBKgQQDViroIHStQgNOjR6nTUnuwSCBNAN
JM4SG202YPUiddWeWmX/RKGg3lIdE+A0WLTPskNCdCAHqdhOSqBwt65qUTZe3gBt
...
ZGipF/DobHDMkpwiaRR5sz6nG4wcki0ryYjAQrdGsR6EVvUUXADkrnrrxuHTWjFl
wEuqyd8X/ApkQsYFX/nhepOEIGWf8Xu0nrjQo77/evhG0sHXborGzgCJwKuimPVy
Fs5kw5mvEoe5DAe3rSKsSUJ1tM4RagJj2WH+BC04SZWNH8kxfOC1E/GSLBCixv3v
+Lwq38CEJRQJLdpta8NcLKnFBwmmVs9OV/VXzNuHYg==
-----END ENCRYPTED PRIVATE KEY-----
```

要将所有内容输出到文件，请将 `>` 重定向附加到上面的示例中，从而生成如下结果。

```
$ aws acm export-certificate \
     --certificate-arn arn:aws:acm:Region:444455556666:certificate/certificate_ID \
     --passphrase fileb://path-to-passphrase-file \
     | jq -r '"\(.Certificate)\(.CertificateChain)\(.PrivateKey)"' \
     > /tmp/export.txt
```