

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