

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

# 规划您的 AWS 私有 CA 证书吊销方法
<a name="revocation-setup"></a>

在规划私有 PKI 时 AWS 私有 CA，应考虑如何处理不再希望端点信任已颁发的证书的情况，例如端点的私钥被泄露的情况。解决此问题的常见方法是使用短期证书或配置证书吊销。短期证书将在很短的时间（几小时或几天）内过期，因此吊销没有任何意义，证书失效的时间与通知端点吊销证书的时间相差无几。本节介绍 AWS 私有 CA 客户的吊销选项，包括配置和最佳实践。

寻找吊销方法的客户可以选择在线证书状态协议 (OCSP)、证书吊销列表 (CRLs) 或两者兼而有之。

**注意**  
如果您在未配置吊销的情况下创建 CA，以后可以随时对其进行配置。有关更多信息，请参阅 [在中更新私有 CA AWS 私有证书颁发机构](PCAUpdateCA.md)。
+ **在线证书状态协议（OCSP）**

  AWS 私有 CA 提供完全托管的 OCSP 解决方案，无需客户自己操作基础架构，即可通知端点证书已被吊销。客户可以使用 AWS 私有 CA 控制台、API、CLI 或通过 CloudFormation单个操作在新的或现有 CAs 版本上启用 OCSP。尽管 CRLs 在端点上存储和处理并且可能会过时，但 OCSP 存储和处理要求是在响应者后端同步处理的。

  为证书颁发机构启用 OCSP 时，会在颁发的每个新证书的*授权信息访问* (AIA) 扩展中 AWS 私有 CA 包含 OCSP 响应者的 URL。该扩展允许 Web 浏览器等客户端查询响应程序并确定是否可以信任终端实体或从属 CA 证书。响应程序返回经过加密签名的状态消息，以确保其真实性。

   AWS 私有 CA OCSP 响应器符合 [RF](https://datatracker.ietf.org/doc/html/rfc5019) C 5019。

  **OCSP 注意事项**
  + OCSP 状态消息的签名算法与发放 CA 配置使用的签名算法相同。 CAs 在 AWS 私有 CA 控制台中创建，默认使用 SHA256 WITHRSA 签名算法。其他支持的算法可以在 [CertificateAuthorityConfiguration](https://docs.aws.amazon.com/privateca/latest/APIReference/API_CertificateAuthorityConfiguration.html)API 文档中找到。
  + [APIPassthrough 如果启用 OCSP 响应器，则 CSRPassthrough证书模板将不适用于 AIA 扩展。](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html#template-varieties)
  + 托管 OCSP 服务的端点可在公共互联网上访问。想要使用 OCSP 但又不想拥有公共端点的客户需要运行自己的 OCSP 基础架构。
+ **证书吊销清单 () CRLs**

  证书吊销列表 (CRL) 是一个包含在预定到期日期之前已撤销的证书列表的文件。CRL 包含一份不应再信任的证书列表、吊销原因和其他相关信息。

  配置证书颁发机构 (CA) 时，可以选择 AWS 私有 CA 创建完整的 CRL 还是分区的 CRL。您的选择决定了证书颁发机构可以颁发和吊销的最大证书数量。有关更多信息，请参阅 [AWS 私有 CA 配额](https://docs.aws.amazon.com/general/latest/gr/pca.html#limits_pca)。

   **CRL 注意事项** 
  + 内存和带宽注意事项：由于本地下载和处理要求， CRLs 需要比 OCSP 更多的内存。但是，与 OCSP 相比，通过缓存吊销列表而不是检查每个连接的状态， CRLs可能会减少网络带宽。对于内存受限的设备，例如某些物联网设备，可以考虑使用分区。 CRLs
  + 更改 CRL 类型：从完整的 CRL 更改为分区 CRL 时，根据需要 AWS 私有 CA 创建新分区，并将 IDP 扩展名添加到所有分区 CRLs，包括原始分区。从分区更改为完成仅更新一个 CRL，并防止将来撤消与先前分区关联的证书。

**注意**  
OCSP 和 OCS CRLs P 在撤销和状态更改可用性之间都存在一定的延迟。  
当您吊销证书时，OCSP 响应最多可能需要 60 分钟才能反映新状态。通常，OCSP 倾向于支持更快地分发撤销信息，因为与客户端 CRLs 可以缓存数天的撤销信息不同，OCSP 响应通常不会被客户端缓存。
通常在吊销证书大约 30 分钟后更新 CRL。如果 CRL 更新因任何原因失败， AWS 私有 CA 则每 15 分钟再尝试一次。

## 吊销配置的一般要求
<a name="revocation-requirements"></a>

以下要求适用于所有吊销配置。
+ 禁用 CRLs 或 OCSP 的配置必须仅包含该`Enabled=False`参数，如果包含`CustomCname`或等其他参数，`ExpirationInDays`则配置将失败。
+ 在 CRL 配置中，`S3BucketName` 参数必须符合 [Amazon Simple Storage Service 桶命名规则](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)。
+ 包含 CRLs 或 OCSP 的自定义规范名称 (CNAME) 参数的配置必须符合对在 CNAME 中使用特殊字符的[RFC7230](https://www.ietf.org/rfc/rfc7230.txt)限制。
+ 在 CRL 或 OCSP 配置中，CNAME 参数的值不得包含协议前缀，例如“http://”或“https://”。

**Topics**
+ [吊销配置的一般要求](#revocation-requirements)
+ [为以下各项设置 CRL AWS 私有 CA](crl-planning.md)
+ [自定义 OCSP 网址 AWS 私有 CA](ocsp-customize.md)

# 为以下各项设置 CRL AWS 私有 CA
<a name="crl-planning"></a>

在将证书吊销列表 (CRL) 配置为 C [A 创建过程](create-CA.md)的一部分之前，可能需要事先进行一些设置。本节说明在创建附有 CRL 的 CA 之前应了解的先决条件和选项。

有关使用在线证书状态协议（OCSP）作为 CRL 的备选或补充的信息，请参阅 [](create-CA.md#PcaCreateRevocation) 和 [自定义 OCSP 网址 AWS 私有 CA](ocsp-customize.md)。

**Topics**
+ [CRL 类型](#crl-type)
+ [CRL 结构](#crl-structure)
+ [亚马逊 S3 CRLs 中的访问策略](#s3-policies)
+ [使用启用 S3 阻止公共访问 (BPA) CloudFront](#s3-bpa)
+ [确定 CRL 分发点 (CDP) URI](#crl-url)
+ [](#crl-ipv6)

## CRL 类型
<a name="crl-type"></a>
+  **完成**-默认设置。 AWS 私有 CA 为 CA 颁发的所有已被吊销的未过期证书维护一个未分区的 CRL 文件。[根据 RFC 5280 中的定义， AWS 私有 CA 颁发的每个证书都通过其 CRL 分发点 (CDP) 扩展绑定到特定 CRL。](https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.9)启用完整 CRL 后，每个 CA 最多可以有 100 万个私有证书。有关更多信息，请参阅[AWS 私有 CA 配额](https://docs.aws.amazon.com/general/latest/gr/pca.html#limits_pca)。
+  **已分区**-与完整版相比 CRLs，分区可以 CRLs 显著增加您的私有 CA 可以颁发的证书数量，并使您不必频繁轮换。 CAs
**重要**  
使用分区时 CRLs，必须验证 CRL 的关联颁发分发点 (IDP) URI 是否与证书的 CDP URI 相匹配，以确保已获取正确的 CRL。 AWS 私有 CA 将 IDP 扩展标记为关键，您的客户必须能够处理该扩展。

## CRL 结构
<a name="crl-structure"></a>

每个 CRL 是一个 DER 编码文件。要下载文件并使用 [OpenSSL](https://www.openssl.org/) 进行查看，请使用类似如下的命令：

```
openssl crl -inform DER -in path-to-crl-file -text -noout
```

CRLs 格式如下：

```
Certificate Revocation List (CRL):
		        Version 2 (0x1)
		    Signature Algorithm: sha256WithRSAEncryption
		        Issuer: /C=US/ST=WA/L=Seattle/O=Example Company CA/OU=Corporate/CN=www.example.com
		        Last Update: Feb 26 19:28:25 2018 GMT
		        Next Update: Feb 26 20:28:25 2019 GMT
		        CRL extensions:
		            X509v3 Authority Key Identifier:
		                keyid:AA:6E:C1:8A:EC:2F:8F:21:BC:BE:80:3D:C5:65:93:79:99:E7:71:65
		
		            X509v3 CRL Number:
		                1519676905984
		Revoked Certificates:
		    Serial Number: E8CBD2BEDB122329F97706BCFEC990F8
		        Revocation Date: Feb 26 20:00:36 2018 GMT
		        CRL entry extensions:
		            X509v3 CRL Reason Code:
		                Key Compromise
		    Serial Number: F7D7A3FD88B82C6776483467BBF0B38C
		        Revocation Date: Jan 30 21:21:31 2018 GMT
		        CRL entry extensions:
		            X509v3 CRL Reason Code:
		                Key Compromise
		    Signature Algorithm: sha256WithRSAEncryption
		         82:9a:40:76:86:a5:f5:4e:1e:43:e2:ea:83:ac:89:07:49:bf:
		         c2:fd:45:7d:15:d0:76:fe:64:ce:7b:3d:bb:4c:a0:6c:4b:4f:
		         9e:1d:27:f8:69:5e:d1:93:5b:95:da:78:50:6d:a8:59:bb:6f:
		         49:9b:04:fa:38:f2:fc:4c:0d:97:ac:02:51:26:7d:3e:fe:a6:
		         c6:83:34:b4:84:0b:5d:b1:c4:25:2f:66:0a:2e:30:f6:52:88:
		         e8:d2:05:78:84:09:01:e8:9d:c2:9e:b5:83:bd:8a:3a:e4:94:
		         62:ed:92:e0:be:ea:d2:59:5b:c7:c3:61:35:dc:a9:98:9d:80:
		         1c:2a:f7:23:9b:fe:ad:6f:16:7e:22:09:9a:79:8f:44:69:89:
		         2a:78:ae:92:a4:32:46:8d:76:ee:68:25:63:5c:bd:41:a5:5a:
		         57:18:d7:71:35:85:5c:cd:20:28:c6:d5:59:88:47:c9:36:44:
		         53:55:28:4d:6b:f8:6a:00:eb:b4:62:de:15:56:c8:9c:45:d7:
		         83:83:07:21:84:b4:eb:0b:23:f2:61:dd:95:03:02:df:0d:0f:
		         97:32:e0:9d:38:de:7c:15:e4:36:66:7a:18:da:ce:a3:34:94:
		         58:a6:5d:5c:04:90:35:f1:8b:55:a9:3c:dd:72:a2:d7:5f:73:
		         5a:2c:88:85
```

**注意**  
只有在颁发了引用它的证书时，CRL 才会存放到 Amazon S3 中。在此之前，Amazon S3 桶中只有显示一个 `acm-pca-permission-test-key` 文件。

## 亚马逊 S3 CRLs 中的访问策略
<a name="s3-policies"></a>

如果您计划创建 CRL，则需要准备一个 Amazon S3 存储桶来存储它。 AWS 私有 CA 自动将 CRL 存入您指定的 Amazon S3 存储桶中，并定期对其进行更新。有关更多信息，请参阅[创建存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html)。

您的 S3 桶必须通过附加的 IAM 权限策略进行保护。授权用户和服务委托人需要`Put`权限 AWS 私有 CA 才能在存储桶中放置对象，以及检索对象的`Get`权限。

**注意**  
IAM 策略配置取决于 AWS 区域 所涉及的内容。区域分为两类：  
**默认启用区域**-默认情况下为所有区域*启用的*区域。 AWS 账户
**默认禁用的区域** – 默认情况下*禁用*但可以由客户手动启用的区域。
有关更多信息以及默认禁用区域的列表，请参阅[管理 AWS 区域](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)。有关在 IAM 上下文中对服务主体的讨论，请参阅[选择加入区域的AWS 服务主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services-in-opt-in-regions)。  
当您配置 CRLs 为证书吊销方法时， AWS 私有 CA 会创建 CRL 并将其发布到 S3 存储桶。S3 存储桶需要一个允许 AWS 私有 CA 服务委托人写入存储桶的 IAM 策略。服务主体的名称因所使用的区域而有所不同，且并非支持所有可能性。  


****  

| PCA | S3 | 服务主体 | 
| --- | --- | --- | 
|  两者位于同一区域  |  `acm-pca.amazonaws.com`  | 
|  已启用  |  已启用  |  `acm-pca.amazonaws.com`  | 
| 已禁用 | 已启用 |  `acm-pca.Region.amazonaws.com`  | 
| 已启用 | 已禁用 |  不支持  | 

默认策略对 CA 不施加任何 `SourceArn` 限制。我们建议您采用宽松程度较低的政策，例如以下政策，该政策限制对特定 AWS 账户和特定私有 CA 的访问权限。或者，您可以使用 a [ws: SourceOrg ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceorgid) 条件键来限制对中特定组织的访问权限。 AWS Organizations有关存储桶策略的更多信息，请参阅 [Amazon 简单存储服务的存储桶策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)。

如果您选择允许默认策略，以后可以随时[修改](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html)。

## 使用启用 S3 阻止公共访问 (BPA) CloudFront
<a name="s3-bpa"></a>

默认情况下，新 Amazon S3 桶是在激活屏蔽公共访问权限（BPA）功能的情况下配置的。BPA 包含在 Amazon S3 [安全最佳实践](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html)中，是一组访问控制，客户可以使用这些控制来微调对 S3 桶中对象和整个桶的访问权限。当 BPA 处于活动状态且配置正确时，只有经过授权和身份验证的 AWS 用户才能访问存储桶及其内容。

AWS 建议在所有 S3 存储桶上使用 BPA，以避免敏感信息泄露给潜在的对手。但是，如果您的PKI客户通过公共互联网（即未登录 AWS 帐户）进行检索 CRLs ，则需要进行额外的规划。本节介绍如何使用 Amazon CloudFront（内容分发网络 (CDN)）配置私有 PKI 解决方案，使其 CRLs 无需经过身份验证的客户端访问 S3 存储桶即可提供服务。

**注意**  
使用 CloudFront 会给您的 AWS 账户带来额外费用。有关更多信息，请参阅 [Amazon CloudFront 定价](https://aws.amazon.com/cloudfront/pricing/)。  
如果您选择将 CRL 存储在启用 BPA 的 S3 存储桶中，但不使用 CloudFront，则必须构建另一个 CDN 解决方案，以确保您的 PKI 客户端可以访问您的 CRL。

### 为 BPA CloudFront 做好准备
<a name="set-up-cloudfront"></a>

创建一个可以访问您的私有 S3 存储桶的 CloudFront 分配，并且可以提供 CRLs 给未经身份验证的客户端。

**为 CR CloudFront L 配置发行版**

1. 使用《*Amazon CloudFront 开发者指南*》中[创建分配](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-creating-console.html)中的步骤创建新 CloudFront 分配。

   完成该过程时，请应用以下设置：
   + 在**源域名**中，选择您的 S3 桶。
   + 为**限制存储桶访问**选择**是**。
   + 为**源访问身份**选择**创建新身份**。
   + 在**授予对存储桶的读取权限**下选择**是，更新存储桶策略**。
**注意**  
在此过程中， CloudFront 修改您的存储桶策略以允许其访问存储桶对象。考虑[编辑](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html)此策略，使其仅允许访问 `crl` 文件夹下的对象。

1. 初始化发行版后，在 CloudFront 控制台中找到其域名并将其保存以供下一个步骤使用。
**注意**  
如果您的 S3 存储桶是在 us-east-1 以外的区域新创建的，则当您通过访问已发布的应用程序时，可能会出现 HTTP 307 临时重定向错误。 CloudFront桶的地址可能需要几个小时才能传播。

### 为 BPA 设置 CA
<a name="set-up-CA"></a>

在配置新 CA 时，请将别名添加到您的 CloudFront发行版中。

**为你的 CA 配置别名记录 CloudFront**
+ 使用 [在中创建私有 CA AWS 私有 CA](create-CA.md) 创建您的 CA。

  执行该过程时，撤销文件`revoke_config.txt`应包含以下几行，以指定非公共 CRL 对象并在中提供分发端点的 URL： CloudFront

  ```
  "S3ObjectAcl":"BUCKET_OWNER_FULL_CONTROL",
  	"CustomCname":"abcdef012345.cloudfront.net"
  ```

  之后，当您使用此 CA 颁发证书时，这些证书将包含如下所示的块：

  ```
  X509v3 CRL Distribution Points: 
  	Full Name:
  	URI:http://abcdef012345.cloudfront.net/crl/01234567-89ab-cdef-0123-456789abcdef.crl
  ```

**注意**  
如果您拥有由此 CA 颁发的较旧证书，则他们将无法访问 CRL。

## 确定 CRL 分发点 (CDP) URI
<a name="crl-url"></a>

如果您需要在工作流程中使用 CRL 分发点 (CDP) URI，则可以使用该证书上的 CRL URI 颁发证书，也可以使用以下方法。这仅适用于完整版 CRLs。分区后面 CRLs 会随机附加一个 GUID。

如果您使用 S3 存储桶作为 CA 的 CRL 分发点 (CDP)，则 CDP URI 可以采用以下格式之一。
+ `http://amzn-s3-demo-bucket.s3.region-code.amazonaws.com/crl/CA-ID.crl`
+ `http://s3.region-code.amazonaws.com/amzn-s3-demo-bucket/crl/CA-ID.crl`

如果您为自己的 CA 配置了自定义 CNAME，则 CDP URI 将包含别名记录，例如，`http://alternative.example.com/crl/CA-ID.crl`

## 
<a name="crl-ipv6"></a>

 默认情况下，使用 IPv4仅限`amazonaws.com`区域的终端节点编 AWS 私有 CA 写 CDP 扩展。要 CRLs 重新使用 IPv6，请执行以下步骤之一，以便 CDPs 在编写时指向 [S3 的双栈端](https://docs.aws.amazon.com/AmazonS3/latest/API/dual-stack-endpoints.html)点： URLs 
+ 将您的 [CRL 自定义名称](create-CA.md#PcaCreateRevocation)设置为 S3 双堆栈终端节点域。例如，`bucketname.s3.dualstack.region-code.amazonaws.com`
+ 设置你自己的 CNAME DNS 记录，指向相关的 S3 双栈端点，然后将其用作 CRL 自定义名称

# 自定义 OCSP 网址 AWS 私有 CA
<a name="ocsp-customize"></a>

**注意**  
本主题适用于想要为品牌或其他目的自定义在线证书状态协议 (OCSP) 响应器端点的公共 URL 的客户。如果您计划使用 AWS 私有 CA 托管 OCSP 的默认配置，则可以跳过本主题并按照配置[吊销中的配置](create-CA.md#PcaCreateRevocation)说明进行操作。

默认情况下，当您为启用 OCSP 时 AWS 私有 CA，您颁发的每个证书都包含 AWS OCSP 响应者的 URL。这允许请求加密安全连接的客户端直接向 AWS发送 OCSP 验证查询。但是，在某些情况下，最好在证书中注明不同的 URL，同时最终仍向 AWS提交 OCSP 查询。

**注意**  
有关使用证书吊销列表（CRL）作为 OCSP 备选或补充的信息，请参阅[配置吊销](create-CA.md#PcaCreateRevocation)和[规划证书吊销列表（CRL）](crl-planning.md)。

为 OCSP 配置自定义 URL 涉及三个元素。
+ **CA 配置** – 在 `RevocationConfiguration` 中为您的 CA 指定自定义 OCSP URL，如 [在中创建私有 CA AWS 私有 CA](create-CA.md) 中的 [示例 2：创建启用 OCSP 和自定义 CNAME 的 CA](create-CA.md#example_2) 中所述。
+ **DNS** – 将 CNAME 记录添加到您的域配置，以将证书中显示的 URL 映射到代理服务器 URL。有关更多信息，请参阅[在中创建私有 CA AWS 私有 CA](create-CA.md)中的[示例 2：创建启用 OCSP 和自定义 CNAME 的 CA](create-CA.md#example_2)。
+ **转发代理服务器** – 设置代理服务器，使其能够透明地将收到的 OCSP 流量转发给 AWS OCSP 响应程序。

下图说明了这些元素协同工作的方式。

![\[自定义 OCSP 拓扑\]](http://docs.aws.amazon.com/zh_cn/privateca/latest/userguide/images/ocsp.png)


如图所示，自定义 OCSP 验证过程包括以下步骤：

1. 客户端查询目标域的 DNS。

1. 客户端收到目标 IP。

1. 客户端打开与目标的 TCP 连接。

1. 客户端收到目标 TLS 证书。

1. 客户端查询 DNS 以获得证书中列出的 OCSP 域。

1. 客户端收到代理 IP。

1. 客户端向代理发送 OCSP 查询。

1. 代理将查询转发到 OCSP 响应程序。

1. 响应程序将证书状态返回给代理。

1. 代理将证书状态转发到客户端。

1. 如果证书有效，则客户端将开始 TLS 握手。

**提示**  
在按照上述方式配置 CA 之后，可以使用[亚马逊 CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/)[和 Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/) 实现此示例。  
在中 CloudFront，创建发行版并按如下方式对其进行配置：  
创建与您的自定义 CNAME 相匹配的备用名称。
将您的证书与其绑定。
设置`ocsp.acm-pca.<region>.amazonaws.com`为原点。  
要使用 IPv6 连接，请使用双栈端点 `acm-pca-ocsp.<region>.api.aws`
应用 `Managed-CachingDisabled` 策略。
将**查看器协议策略**更改为 **HTTP 和 HTTPS**。
将**允许的 HTTP 方法**设置为 **GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE**。
在 Route 53 中，创建一个 DNS 记录，将您的自定义 CNAME 映射到 CloudFront 分配的网址。

## 通过使用 OCSP IPv6
<a name="ocsp-ipv6"></a>

 默认 AWS 私有 CA OCSP 响应器网址仅为 IPv4-only。要使用 OCSP IPv6，请为您的 CA 配置自定义 OCSP 网址。网址可以是：
+ 双栈 PCA OCSP 响应器的 FQDN，其形式为 `acm-pca-ocsp.region-name.api.aws`
+ 如上所述，您已将其配置为指向双堆栈 OCSP 响应器的别名记录。