

# 要求在 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 连接。