

# 将 HTTPS 与 CloudFront 结合使用
<a name="using-https"></a>

您可以将 CloudFront 配置为要求查看器使用 HTTPS，以便在 CloudFront 与查看器通信时加密连接。您也可以将 CloudFront 配置为通过源使用 HTTPS，以便在 CloudFront 与源通信时加密连接。

如果您将 CloudFront 配置为要求使用 HTTPS 与查看器和您的源进行通信，当 CloudFront 接收请求时将发生以下操作。

1. 查看器向 CloudFront 提交 HTTPS 请求。查看器和 CloudFront 之间存在一些 SSL/TLS 协商。最后，查看器以加密格式提交请求。

1. 如果 CloudFront 边缘站点包含缓存响应，CloudFront 将为响应加密并将其返回给查看器，然后查看器对其进行解密。

1. 如果 CloudFront 边缘站点不包含缓存响应中，CloudFront 则与您的源执行 SSL/TLS 协商，当协商完成时，将请求以加密格式转发给您的源。

1. 您的源会对请求进行解密、处理（生成响应），加密响应，并将响应返回给 CloudFront。

1. CloudFront 对响应进行解密，并对其重新加密，然后将其转发给查看器。CloudFront 还将缓存边缘站点中的响应，以便在下次请求时可用。

1. 查看器对响应进行解密。

无论您的源是 Amazon S3 存储桶、MediaStore 还是 HTTP/S 服务器之类的自定义源，过程基本相同：

**注意**  
为了帮助阻止 SSL 重新协商类型的攻击，CloudFront 不支持查看方和源请求的重新协商。

或者，您可以为 CloudFront 分配启用双向身份验证。有关更多信息，请参阅 [CloudFront 的双向 TLS 身份验证（查看器 mTLS）源双向 TLS 与 CloudFront 结合使用](mtls-authentication.md)。

有关在查看器和 CloudFront 之间以及 CloudFront 和源之间如何使用 HTTPS 的信息，请参阅以下主题。

**Topics**
+ [要求在查看器和 CloudFront 之间使用 HTTPS](using-https-viewers-to-cloudfront.md)
+ [要求通过 HTTPS 连接到自定义源](using-https-cloudfront-to-custom-origin.md)
+ [要求通过 HTTPS 连接到 Amazon S3 源](using-https-cloudfront-to-s3-origin.md)
+ [查看器和 CloudFront 之间支持的协议和密码](secure-connections-supported-viewer-protocols-ciphers.md)
+ [CloudFront 与源之间受支持的协议和密码](secure-connections-supported-ciphers-cloudfront-to-origin.md)

# 要求在查看器和 CloudFront 之间使用 HTTPS 进行通信
<a name="using-https-viewers-to-cloudfront"></a>

您可以在 CloudFront 分配中配置一个或多个缓存行为，以便要求在查看器和 CloudFront 之间使用 HTTPS 进行通信。您也可以配置一个或多个缓存行为以允许 HTTP 和 HTTPS，以便 CloudFront 对某些对象要求使用 HTTPS，而对其他对象不做这一要求。配置步骤取决于您在对象 URL 中使用的域名：
+ 如果您使用 CloudFront 指派给您的域名（例如 d111111abcdef8.cloudfront.net），您可以针对要求 HTTPS 通信的一个或多个缓存行为更改 **查看器协议策略**设置。在该配置中，CloudFront 提供 SSL/TLS 证书。

  要使用 CloudFront 控制台更改**查看器协议策略**值，请参阅本节后面的步骤。

  有关如何使用 CloudFront API 更改 `ViewerProtocolPolicy` 元素值的信息，请参阅《Amazon CloudFront API 参考》**中的 [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)。
+ 如果您使用自己的域名（例如 example.com），则需要更改若干 CloudFront 设置。您还需要使用 AWS Certificate Manager (ACM) 提供的 SSL/TLS 证书，或将证书从第三方证书颁发机构导入到 ACM 或 IAM 证书存储。有关更多信息，请参阅 [使用备用域名和 HTTPS](using-https-alternate-domain-names.md)。

**注意**  
如果您希望确保在 CloudFront 从源获取对象并且查看器从 CloudFront 获取这些对象时，对象得到了加密，请始终在 CloudFront 和您的源之间使用 HTTPS。如果您最近在 CloudFront 和您的源之间从 HTTP 更改为 HTTPS，建议您使 CloudFront 边缘站点中的对象失效。CloudFront 将对象返回给查看器，而无论查看器使用的协议（HTTP 或 HTTPS）与 CloudFront 用于获取对象的协议是否匹配。有关删除或替换分配中的对象的更多信息，请参阅 [添加、删除或替换 CloudFront 分配的内容](AddRemoveReplaceObjects.md)。

## 要求查看器使用 HTTPS
<a name="configure-cloudfront-HTTPS-viewers"></a>

如果针对一个或多个缓存行为要求在查看器和 CloudFront 之间使用 HTTPS，请执行以下步骤。<a name="using-https-viewers-to-cloudfront-procedure"></a>

**将 CloudFront 配置为要求在查看器与 CloudFront 之间使用 HTTPS**

1. 登录 AWS 管理控制台，并通过以下网址打开 CloudFront 控制台：[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 在 CloudFront 控制台的顶部窗格中，选择您要更新的分配的 ID。

1. 在**行为**选项卡中，选择要更新的缓存行为，然后选择**编辑**。

1. 为**查看器协议策略**指定以下值之一：  
**Redirect HTTP to HTTPS**  
查看器可以使用两种协议。HTTP `GET` 和 `HEAD` 请求会自动重定向到 HTTPS 请求。CloudFront 返回 HTTP 状态代码 301（永久移动）以及新的 HTTPS URL。然后，查看器会使用此 HTTPS URL 将请求重新提交到 CloudFront。  
如果您通过 HTTP 使用 HTTP 到 HTTPS 的缓存行为以及请求协议版本 HTTP 1.1 或更高版本发送 `POST`、`PUT`、`DELETE`、`OPTIONS` 或 `PATCH`，CloudFront 会使用 HTTP 状态代码 307（临时重定向）将请求重定向到 HTTPS 位置。这可确保使用相同的方法和正文负载将请求再次发送到新位置。  
如果您使用低于 HTTP 1.1 的请求协议版本通过 HTTP 到 HTTPS 的缓存行为发送 `POST`、`PUT`、`DELETE`、`OPTIONS` 或 `PATCH` 请求，CloudFront 将返回 HTTP 状态代码 403（禁止访问）。
在查看器发出将重定向到 HTTPS 请求的 HTTP 请求时，会产生针对这两个请求的 CloudFront 费用。对于 HTTP 请求，仅对该请求和 CloudFront 返回到查看器的标头计费。对于 HTTPS 请求，对该请求、标头和由源返回的对象计费。  
**仅 HTTPS**  
查看器只有使用 HTTPS 才能访问您的内容。如果查看器发送 HTTP 请求而不是 HTTPS 请求，则 CloudFront 将返回 HTTP 状态代码 403（禁止访问）且不会返回对象。

1. 选择**保存更改**。

1. 针对要求在查看器和 CloudFront 之间使用 HTTPS 的其他每个缓存行为，重复步骤 3 到 5。

1. 请确认以下内容，然后在生产环境中使用更新后的配置：
   + 每个缓存行为中的路径模式仅适用于您希望查看器使用 HTTPS 的请求。
   + 缓存行为按您希望 CloudFront 评估它们的顺序列出。有关更多信息，请参阅 [路径模式](DownloadDistValuesCacheBehavior.md#DownloadDistValuesPathPattern)。
   + 缓存行为将请求路由到正确的源。

# 要求在 CloudFront 与您的自定义源之间使用 HTTPS 进行通信
<a name="using-https-cloudfront-to-custom-origin"></a>

您可以要求使用 HTTPS 在 CloudFront 与您的源之间的通信

**注意**  
如果您的源是配置为网站终端节点的 Amazon S3 存储桶，则无法将 CloudFront 配置为将 HTTPS 与源结合使用，因为 Amazon S3 不支持对网站终端节点使用 HTTPS。

如需要求在 CloudFront 和您的源之间的需要使用 HTTPS，请按照本主题中的过程执行以下操作：

1. 在您的分配中，更改源的 **Origin Protocol Policy (源协议策略)** 设置

1. 在您的自定义源服务器上安装 SSL/TLS 证书（当您使用 Amazon S3 源或某些其他 AWS 源时，不需要执行此操作）。

**Topics**
+ [要求自定义源使用 HTTPS](#using-https-cloudfront-to-origin-distribution-setting)
+ [在自定义源上安装 SSL/TLS 证书](#using-https-cloudfront-to-origin-certificate)

## 要求自定义源使用 HTTPS
<a name="using-https-cloudfront-to-origin-distribution-setting"></a>

以下过程介绍了如何配置 CloudFront 以使用 HTTPS 与 Elastic Load Balancing 负载均衡器、Amazon EC2 实例或其他自定义源进行通信。有关使用 CloudFront API 更新分配的信息，请参阅《Amazon CloudFront API 参考》**中的 [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)。<a name="using-https-cloudfront-to-custom-origin-procedure"></a>

**将 CloudFront 配置为要求在 CloudFront 和您的自定义源之间使用 HTTPS**

1. 登录 AWS 管理控制台，并通过以下网址打开 CloudFront 控制台：[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 在 CloudFront 控制台的顶部窗格中，选择您要更新的分配的 ID。

1. 在**行为**选项卡中，选择要更新的源，然后选择**编辑**。

1. 更新以下设置：  
**源协议策略**  
为您的分配中的适用源更改**源协议策略**：  
   + **仅 HTTPS** – CloudFront 仅使用 HTTPS 与自定义源进行通信。
   + **匹配查看器** – CloudFront 使用 HTTP 或 HTTPS 与自定义源进行通信，具体取决于查看器请求协议。例如，如果您**源协议策略**选择**匹配查看器**，并且查看器使用 HTTPS 从 CloudFront 请求对象，则 CloudFront 也会使用 HTTPS 将请求转发给您的源。

     只有在为**查看器协议策略**指定**将 HTTP 重定向到 HTTPS** 或**仅 HTTPS** 时，才能选择**匹配查看器**。

     请注意，CloudFront 仅缓存对象一次，即使查看器使用 HTTP 和 HTTPS 协议发出请求也是如此。  
**Origin SSL Protocols**  
为您的分配中的适用源选择 **Origin SSL Protocols**。由于 SSLv3 协议的安全性较低，因此，建议您仅在源不支持 TLSv1 或更高版本的情况下选择 SSLv3。TLSv1 握手与 SSLv3 向后和向前兼容，但 TLSv1.1 及更高版本不是这样。当您选择 SSLv3 时，CloudFront *仅* 发送 SSLv3 握手请求。

1. 选择**保存更改**。

1. 针对要求在 CloudFront 和您的自定义源之间使用 HTTPS 的其他每个源，重复步骤 3 到 5。

1. 请确认以下内容，然后在生产环境中使用更新后的配置：
   + 每个缓存行为中的路径模式仅适用于您希望查看器使用 HTTPS 的请求。
   + 缓存行为按您希望 CloudFront 评估它们的顺序列出。有关更多信息，请参阅 [路径模式](DownloadDistValuesCacheBehavior.md#DownloadDistValuesPathPattern)。
   + 缓存行为将请求路由到更改了**源协议策略**的源。

## 在自定义源上安装 SSL/TLS 证书
<a name="using-https-cloudfront-to-origin-certificate"></a>

您可以在自定义源上使用来自以下来源的 SSL/TLS 证书：
+ 如果您的源是 Elastic Load Balancing 负载均衡器，则可以使用 AWS Certificate Manager (ACM) 提供的证书。您也可以使用信任的第三方证书颁发机构签署并导入 ACM 的证书。
+ 对于 Elastic Load Balancing 负载均衡器之外的源，您必须使用由信任的第三方证书颁发机构 (CA)（例如，Comodo、DigiCert 或 Symantec）签署的证书。

从源返回的证书必须包括以下域名之一：
+ 源的**源域**字段中的域名（CloudFront API 中的 `DomainName` 字段）。
+ `Host` 标头中的域名，如果缓存行为配置为将 `Host` 标头转发至源。

当 CloudFront 使用 HTTPS 与您的源进行通信时，CloudFront 会验证信任的证书颁发机构颁发的证书。CloudFront 与 Mozilla 支持相同的证书颁发机构。有关当前列表，请参阅 [Mozilla 包含的 CA 证书列表](https://wiki.mozilla.org/CA/Included_Certificates)。您无法使用自签名证书在 CloudFront 和您的源之间进行 HTTPS 通信。

**重要**  
如果源服务器返回过期证书、无效证书或自签名证书，或者如果源服务器以错误顺序返回证书链，CloudFront 将中断 TCP 连接，向查看器返回 HTTP 错误代码 502（无效网关），并将 `X-Cache` 标头设置为 `Error from cloudfront`。此外，如果不存在完整的证书链（包括中间证书），则 CloudFront 将中断 TCP 连接。

# 要求在 CloudFront 与 Amazon S3 源之间使用 HTTPS 进行通信
<a name="using-https-cloudfront-to-s3-origin"></a>

当您的源是 Amazon S3 存储桶时，用于使用 HTTPS 以与 CloudFront 进行通信的选项取决于您使用存储桶的方式。如果您的 Amazon S3 存储桶配置为网站终端节点，则您无法将 CloudFront 配置为使用 HTTPS 与您的源进行通信，因为 Amazon S3 不支持该配置中的 HTTPS 连接。

当源是支持 HTTPS 通信的 Amazon S3 存储桶时，CloudFront 使用查看器用来提交请求的协议将请求转发到 S3。[协议（仅自定义源）](DownloadDistValuesOrigin.md#DownloadDistValuesOriginProtocolPolicy) 的默认设置为**匹配查看器**，并且不能更改。但是，如果为 Amazon S3 源启用来源访问控制（OAC），则 CloudFront 和 Amazon S3 之间使用的通信将取决于您的设置。有关更多信息，请参阅 [创建新的源访问控制](private-content-restricting-access-to-s3.md#create-oac-overview-s3)。

如果您希望要求在 CloudFront 和 Amazon S3 之间使用 HTTPS 进行通信，则必须将**查看器协议策略**的值更改为**将 HTTP 重定向到 HTTPS** 或**仅 HTTPS**。有关如何使用 CloudFront 控制台更改**查看器协议策略**的信息，请参阅本节后面的步骤。有关使用 CloudFront API 更新分配的 `ViewerProtocolPolicy` 元素的信息，请参阅 *Amazon CloudFront API 参考*中的 [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)。

当您将 HTTPS 与支持 HTTPS 通信的 Amazon S3 存储桶结合使用时，Amazon S3 会提供 SSL/TLS 证书，因此您无需提供。

## 要求 Amazon S3 源使用 HTTPS
<a name="configure-cloudfront-HTTPS-S3-origin"></a>

以下步骤演示如何将 CloudFront 配置为要求通过 HTTPS 连接到您的 Amazon S3 源。<a name="using-https-cloudfront-to-s3-origin-procedure"></a>

**将 CloudFront 配置为要求通过 HTTPS 连接到您的 Amazon S3 源**

1. 登录 AWS 管理控制台，并通过以下网址打开 CloudFront 控制台：[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

1. 在 CloudFront 控制台的顶部窗格中，选择您要更新的分配的 ID。

1. 在 **Behaviors** 选项卡中，选择要更新的缓存行为，然后选择 **Edit**。

1. 为**查看器协议策略**指定以下值之一：  
**将 HTTP 重定向到 HTTPS**  
查看器可使用两种协议，但 HTTP 请求将自动重定向到 HTTPS 请求。CloudFront 返回 HTTP 状态代码 301（永久移动）以及新的 HTTPS URL。然后，查看器会使用此 HTTPS URL 将请求重新提交到 CloudFront。  
CloudFront 不将 `DELETE`、`OPTIONS`、`PATCH`、`POST` 或 `PUT` 请求从 HTTP 重定向到 HTTPS。如果您将一个缓存行为配置为重定向到 HTTPS，CloudFront 会针对该缓存行为的 HTTP `DELETE`、`OPTIONS`、`PATCH`、`POST` 或 `PUT` 请求响应 HTTP 状态代码 403（禁止访问）。
在查看器发出将重定向到 HTTPS 请求的 HTTP 请求时，会产生针对这两个请求的 CloudFront 费用。对于 HTTP 请求，仅对该请求和 CloudFront 返回到查看器的标头计费。对于 HTTPS 请求，对该请求、标头和由源返回的对象计费。  
**HTTPS Only**  
查看器只有使用 HTTPS 才能访问您的内容。如果查看器发送 HTTP 请求而不是 HTTPS 请求，则 CloudFront 将返回 HTTP 状态代码 403（禁止访问）且不会返回对象。

1. 选择**是，编辑**。

1. 针对要求在查看器和 CloudFront 之间以及 CloudFront 和 S3 之间使用 HTTPS 的其他每个缓存行为，重复步骤 3 到 5。

1. 请确认以下内容，然后在生产环境中使用更新后的配置：
   + 每个缓存行为中的路径模式仅适用于您希望查看器使用 HTTPS 的请求。
   + 缓存行为按您希望 CloudFront 评估它们的顺序列出。有关更多信息，请参阅 [路径模式](DownloadDistValuesCacheBehavior.md#DownloadDistValuesPathPattern)。
   + 缓存行为将请求路由到正确的源。

# 查看器和 CloudFront 之间支持的协议和密码
<a name="secure-connections-supported-viewer-protocols-ciphers"></a>

当您[需要在查看器和 CloudFront 分配之间使用 HTTPS](DownloadDistValuesCacheBehavior.md#DownloadDistValuesViewerProtocolPolicy) 时，必须选择一项[安全策略](DownloadDistValuesGeneral.md#DownloadDistValues-security-policy)来确定以下设置。
+ CloudFront 与查看器通信时使用的最低 SSL/TLS 协议。
+ CloudFront 可用于加密与查看器之间的通信的密码。

要选择安全策略，请为 [安全策略（最低 SSL/TLS 版本）](DownloadDistValuesGeneral.md#DownloadDistValues-security-policy) 指定合适的值。下表列出了每个安全策略中，CloudFront 可用的协议和密码。

查看器至少必须支持这些受支持的密码中的一个，才能与 CloudFront 建立 HTTPS 连接。CloudFront 按列出的顺序从查看器支持的密码中选择一种密码。另请参阅 [OpenSSL、s2n 和 RFC 密码名称](#secure-connections-openssl-rfc-cipher-names)。


|  | 安全策略 |  | SSLv3 | TLSv1 | TLSv1\$12016 | TLSv1.1\$12016 | TLSv1.2\$12018 | TLSv1.2\$12019 | TLSv1.2\$12021 | TLSv1.2\$12025 | TLSv1.3\$12025 | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| 支持的 SSL/TLS 协议 | 
| TLSv1.3 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLSv1.2 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ |  | 
| TLSv1.1 | ♦ | ♦ | ♦ | ♦ |  |  |  |  |  | 
| TLSv1 | ♦ | ♦ | ♦ |  |  |  |  |  |  | 
| SSLv3 | ♦ |  |  |  |  |  |  |  |  | 
| 支持的 TLSv1.3 密码 | 
| TLS\$1AES\$1128\$1GCM\$1SHA256 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1AES\$1256\$1GCM\$1SHA384 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1CHACHA20\$1POLY1305\$1SHA256 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ |  | ♦ | 
| 支持的 ECDSA 密码 | 
| ECDHE-ECDSA-AES128- GCM-SHA256 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ |  | 
| ECDHE-ECDSA-AES128-SHA256 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ |  |  |  | 
| ECDHE-ECDSA-AES128-SHA | ♦ | ♦ | ♦ | ♦ |  |  |  |  |  | 
| ECDHE-ECDSA-AES256- GCM-SHA384 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ |  | 
| ECDHE-ECDSA-CHACHA20-POLY1305 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ |  |  | 
| ECDHE-ECDSA-AES256-SHA384 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ |  |  |  | 
| ECDHE-ECDSA-AES256-SHA | ♦ | ♦ | ♦ | ♦ |  |  |  |  |  | 
| 支持的 RSA 密码 | 
| ECDHE-RSA-AES128- GCM-SHA256 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ |  | 
| ECDHE-RSA-AES128-SHA256 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ |  |  |  | 
| ECDHE-RSA-AES128-SHA | ♦ | ♦ | ♦ | ♦ |  |  |  |  |  | 
| ECDHE-RSA-AES256- GCM-SHA384 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ |  | 
| ECDHE-RSA-CHACHA20-POLY1305 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ |  |  | 
| ECDHE-RSA-AES256-SHA384 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ |  |  |  | 
| ECDHE-RSA-AES256-SHA | ♦ | ♦ | ♦ | ♦ |  |  |  |  |  | 
| AES128-GCM-SHA256 | ♦ | ♦ | ♦ | ♦ | ♦ |  |  |  |  | 
| AES256-GCM-SHA384 | ♦ | ♦ | ♦ | ♦ | ♦ |  |  |  |  | 
| AES128-SHA256 | ♦ | ♦ | ♦ | ♦ | ♦ |  |  |  |  | 
| AES256-SHA | ♦ | ♦ | ♦ | ♦ |  |  |  |  |  | 
| AES128-SHA | ♦ | ♦ | ♦ | ♦ |  |  |  |  |  | 
| DES-CBC3-SHA | ♦ | ♦ |  |  |  |  |  |  |  | 
| RC4-MD5 | ♦ |  |  |  |  |  |  |  |  | 

## OpenSSL、s2n 和 RFC 密码名称
<a name="secure-connections-openssl-rfc-cipher-names"></a>

OpenSSL 和 [s2n](https://github.com/awslabs/s2n) 使用的密码名称与 TLS 标准使用的不同（[RFC 2246](https://tools.ietf.org/html/rfc2246)、[RFC 4346](https://tools.ietf.org/html/rfc4346)、[RFC 5246](https://tools.ietf.org/html/rfc5246) 和 [RFC 8446](https://tools.ietf.org/html/rfc8446)）。下表为每个密码列出了 OpenSSL 和 s2n 名称及对应的 RFC 名称。

CloudFront 同时支持经典密钥交换与量子安全密钥交换。对于使用椭圆曲线的经典密钥交换，CloudFront 支持：
+ `prime256v1`
+ `X25519`
+ `secp384r1`

对于量子安全密钥交换，CloudFront 支持：
+ `X25519MLKEM768`
+ `SecP256r1MLKEM768`
**注意**  
仅 TLS 1.3 支持量子安全密钥交换。TLS 1.2 及早期版本不支持量子安全密钥交换。

  有关更多信息，请参阅以下主题：
  + [Post-Quantum Cryptography](https://aws.amazon.com/security/post-quantum-cryptography/)
  + [Cryptography algorithms and AWS 服务](https://docs.aws.amazon.com/prescriptive-guidance/latest/encryption-best-practices/aws-cryptography-services.html#algorithms)
  + [Hybrid key exchange in TLS 1.3](https://datatracker.ietf.org/doc/draft-ietf-tls-hybrid-design/)

有关 CloudFront 的证书要求的更多信息，请参阅[在 CloudFront 中使用 SSL/TLS 证书的要求](cnames-and-https-requirements.md)。


| OpenSSL 和 s2n 密码名称 | RFC 密码名称 | 
| --- | --- | 
| 支持的 TLSv1.3 密码 | 
| TLS\$1AES\$1128\$1GCM\$1SHA256 | TLS\$1AES\$1128\$1GCM\$1SHA256 | 
| TLS\$1AES\$1256\$1GCM\$1SHA384 | TLS\$1AES\$1256\$1GCM\$1SHA384 | 
| TLS\$1CHACHA20\$1POLY1305\$1SHA256 | TLS\$1CHACHA20\$1POLY1305\$1SHA256 | 
| 支持的 ECDSA 密码 | 
| ECDHE-ECDSA-AES128- GCM-SHA256 | TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 | 
| ECDHE-ECDSA-AES128-SHA256 | TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 | 
| ECDHE-ECDSA-AES128-SHA | TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 
| ECDHE-ECDSA-AES256- GCM-SHA384 | TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 | 
| ECDHE-ECDSA-CHACHA20-POLY1305 | TLS\$1ECDHE\$1ECDSA\$1WITH\$1CHACHA20\$1POLY1305\$1SHA256 | 
| ECDHE-ECDSA-AES256-SHA384 | TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 
| ECDHE-ECDSA-AES256-SHA | TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 
| 支持的 RSA 密码 | 
| ECDHE-RSA-AES128- GCM-SHA256 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 | 
| ECDHE-RSA-AES128-SHA256 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256  | 
| ECDHE-RSA-AES128-SHA | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 
| ECDHE-RSA-AES256- GCM-SHA384 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384  | 
| ECDHE-RSA-CHACHA20-POLY1305 | TLS\$1ECDHE\$1RSA\$1WITH\$1CHACHA20\$1POLY1305\$1SHA256 | 
| ECDHE-RSA-AES256-SHA384 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  | 
| ECDHE-RSA-AES256-SHA | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 
| AES128-GCM-SHA256 | TLS\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 | 
| AES256-GCM-SHA384 | TLS\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 | 
| AES128-SHA256 | TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 | 
| AES256-SHA | TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 
| AES128-SHA | TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 
| DES-CBC3-SHA  | TLS\$1RSA\$1WITH\$13DES\$1EDE\$1CBC\$1SHA  | 
| RC4-MD5 | TLS\$1RSA\$1WITH\$1RC4\$1128\$1MD5 | 

## 查看器和 CloudFront 之间受支持的签名方案
<a name="secure-connections-viewer-signature-schemes"></a>

CloudFront 支持以下用于查看器和 CloudFront 之间的连接的签名方案。


|  | 安全策略 | 签名模式 | SSLv3 | TLSv1 | TLSv1\$12016 | TLSv1.1\$12016 | TLSv1.2\$12018 | TLSv1.2\$12019 |  TLSv1.2\$12021 | TLSv1.2\$12025 | TLSv1.3\$12025 | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PSS\$1PSS\$1SHA256 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PSS\$1PSS\$1SHA384 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PSS\$1PSS\$1SHA512 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PSS\$1RSAE\$1SHA256 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PSS\$1RSAE\$1SHA384 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PSS\$1RSAE\$1SHA512 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PKCS1\$1SHA256 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PKCS1\$1SHA384 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PKCS1\$1SHA512 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PKCS1\$1SHA224 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ |  |  | 
| TLS\$1SIGNATURE\$1SCHEME\$1ECDSA\$1SHA256 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1SIGNATURE\$1SCHEME\$1ECDSA\$1SHA384 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1SIGNATURE\$1SCHEME\$1ECDSA\$1SHA512 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1SIGNATURE\$1SCHEME\$1ECDSA\$1SHA224 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ |  |  | 
| TLS\$1SIGNATURE\$1SCHEME\$1ECDSA\$1SECP256R1\$1SHA256 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1SIGNATURE\$1SCHEME\$1ECDSA\$1SECP384R1\$1SHA384 | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | ♦ | 
| TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PKCS1\$1SHA1 | ♦ | ♦ | ♦ | ♦ |  |  |  |  |  | 
| TLS\$1SIGNATURE\$1SCHEME\$1ECDSA\$1SHA1 | ♦ | ♦ | ♦ | ♦ |  |  |  |  |  | 

# CloudFront 与源之间受支持的协议和密码
<a name="secure-connections-supported-ciphers-cloudfront-to-origin"></a>

如果您选择[要求在 CloudFront 和源之间使用 HTTPS](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginProtocolPolicy)，则可以确定安全连接[允许使用哪项 SSL/TLS 协议](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesOriginSSLProtocols)，并且 CloudFront 可以使用下表中列出的任何 ECDSA 或 RSA 密码连接到源。您的源至少必须支持这些密码中的其中一个，才能使 CloudFront 与您的源建立 HTTPS 连接。

OpenSSL 和 [s2n](https://github.com/awslabs/s2n) 使用的密码名称与 TLS 标准使用的不同（[RFC 2246](https://tools.ietf.org/html/rfc2246)、[RFC 4346](https://tools.ietf.org/html/rfc4346)、[RFC 5246](https://tools.ietf.org/html/rfc5246) 和 [RFC 8446](https://tools.ietf.org/html/rfc8446)）。下表为每个密码列出了 OpenSSL 和 s2n 名称及对应的 RFC 名称。

对于使用椭圆曲线密钥交换算法的密码，CloudFront 支持以下椭圆曲线：
+ prime256v1
+ secp384r1
+ X25519


| OpenSSL 和 s2n 密码名称 | RFC 密码名称 | 
| --- | --- | 
| 支持的 ECDSA 密码 | 
| ECDHE-ECDSA-AES256- GCM-SHA384 | TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 | 
| ECDHE-ECDSA-AES256-SHA384 | TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 
| ECDHE-ECDSA-AES256-SHA | TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 
| ECDHE-ECDSA-AES128- GCM-SHA256 | TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 | 
| ECDHE-ECDSA-AES128-SHA256 | TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 | 
| ECDHE-ECDSA-AES128-SHA | TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 
| 支持的 RSA 密码 | 
| ECDHE-RSA-AES256- GCM-SHA384 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 | 
| ECDHE-RSA-AES256-SHA384 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 
| ECDHE-RSA-AES256-SHA | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 
| ECDHE-RSA-AES128- GCM-SHA256 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 | 
| ECDHE-RSA-AES128-SHA256 | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 | 
| ECDHE-RSA-AES128-SHA | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 
| AES256-SHA | TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 
| AES128-SHA | TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 
| DES-CBC3-SHA | TLS\$1RSA\$1WITH\$13DES\$1EDE\$1CBC\$1SHA | 
| RC4-MD5 | TLS\$1RSA\$1WITH\$1RC4\$1128\$1MD5 | 

**CloudFront 与源之间受支持的签名方案**

CloudFront 支持以下签名方案，用于 CloudFront 和源之间的连接。
+ TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PKCS1\$1SHA256
+ TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PKCS1\$1SHA384
+ TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PKCS1\$1SHA512
+ TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PKCS1\$1SHA224
+ TLS\$1SIGNATURE\$1SCHEME\$1ECDSA\$1SHA256
+ TLS\$1SIGNATURE\$1SCHEME\$1ECDSA\$1SHA384
+ TLS\$1SIGNATURE\$1SCHEME\$1ECDSA\$1SHA512
+ TLS\$1SIGNATURE\$1SCHEME\$1ECDSA\$1SHA224
+ TLS\$1SIGNATURE\$1SCHEME\$1RSA\$1PKCS1\$1SHA1
+ TLS\$1SIGNATURE\$1SCHEME\$1ECDSA\$1SHA1