要求在查看器和 CloudFront 之间使用 HTTPS 进行通信 - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

要求在查看器和 CloudFront 之间使用 HTTPS 进行通信

您可以在 CloudFront 分配中配置一个或多个缓存行为,以便要求在查看器和 CloudFront 之间使用 HTTPS 进行通信。您也可以配置一个或多个缓存行为以允许 HTTP 和 HTTPS,以便 CloudFront 对某些对象要求使用 HTTPS,而对其他对象不做这一要求。配置步骤取决于您在对象 URL 中使用的域名:

  • 如果您使用 CloudFront 指派给您的域名(例如 d111111abcdef8.cloudfront.net),您可以针对要求 HTTPS 通信的一个或多个缓存行为更改 查看器协议策略设置。在该配置中,CloudFront 提供 SSL/TLS 证书。

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

    有关如何使用 CloudFront API 更改 ViewerProtocolPolicy 元素值的信息,请参阅《Amazon CloudFront API 参考》中的 UpdateDistribution

  • 如果您使用自己的域名(例如 example.com),则需要更改若干 CloudFront 设置。您还需要使用 Amazon Certificate Manager (ACM) 提供的 SSL/TLS 证书,或将证书从第三方证书颁发机构导入到 ACM 或 IAM 证书存储。有关更多信息,请参阅 使用备用域名和 HTTPS

注意

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

如果针对一个或多个缓存行为要求在查看器和 CloudFront 之间使用 HTTPS,请执行以下步骤。

将 CloudFront 配置为要求在查看器与 CloudFront 之间使用 HTTPS
  1. 登录 Amazon Web Services Management Console,并通过以下网址打开 CloudFront 控制台:https://console.amazonaws.cn/cloudfront/v3/home

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

  3. Behaviors 选项卡中,选择要更新的缓存行为,然后选择 Edit

  4. 指定 Viewer Protocol Policy 的以下值之一:

    Redirect HTTP to HTTPS

    查看器可以使用两种协议。HTTP GETHEAD 请求会自动重定向到 HTTPS 请求。CloudFront 返回 HTTP 状态代码 301(永久移动)以及新的 HTTPS URL。然后,查看器会使用此 HTTPS URL 将请求重新提交到 CloudFront。

    重要

    如果您通过 HTTP 使用 HTTP 到 HTTPS 的缓存行为以及请求协议版本 HTTP 1.1 或更高版本发送 POSTPUTDELETEOPTIONSPATCH,CloudFront 会使用 HTTP 状态代码 307(临时重定向)将请求重定向到 HTTPS 位置。这可确保使用相同的方法和正文负载将请求再次发送到新位置。

    如果您使用低于 HTTP 1.1 的请求协议版本通过 HTTP 到 HTTPS 的缓存行为发送 POSTPUTDELETEOPTIONSPATCH 请求,CloudFront 将返回 HTTP 状态代码 403(禁止访问)。

    在查看器发出将重定向到 HTTPS 请求的 HTTP 请求时,会产生针对这两个请求的 CloudFront 费用。对于 HTTP 请求,仅对该请求和 CloudFront 返回到查看器的标头计费。对于 HTTPS 请求,对该请求、标头和由源返回的对象计费。

    HTTPS Only

    查看器只有使用 HTTPS 才能访问您的内容。如果查看器发送 HTTP 请求而不是 HTTPS 请求,则 CloudFront 将返回 HTTP 状态代码 403(禁止访问)且不会返回对象。

  5. 选择是,编辑

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

  7. 请确认以下内容,然后在生产环境中使用更新后的配置:

    • 每个缓存行为中的路径模式仅适用于您希望查看器使用 HTTPS 的请求。

    • 缓存行为按您希望 CloudFront 评估它们的顺序列出。有关更多信息,请参阅路径模式

    • 缓存行为将请求路由到正确的源。