Amazon CloudFront
开发人员指南 (API 版本 2016-09-29)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

要求在查看器和 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 Reference 中的 UpdateDistribution

  • 如果您使用自己的域名 (例如 example.com),您需要更改若干 CloudFront 设置。您还需要使用 AWS 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. 登录 AWS 管理控制台,通过以下网址打开 CloudFront 控制台:https://console.amazonaws.cn/cloudfront/

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

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

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

    Redirect HTTP to HTTPS

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

    重要

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

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

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

    HTTPS Only

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

  5. 选择是,编辑

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

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

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

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

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