要求在查看器和 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 分配的内容

要求查看器使用 HTTPS

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

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

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

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

  4. 查看器协议策略指定以下值之一:

    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

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

  5. 选择保存更改

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

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

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

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

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