

# 要求在 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)。
   + 缓存行为将请求路由到正确的源。