要求在 CloudFront 与 Amazon S3 源之间使用 HTTPS 进行通信 - Amazon CloudFront

要求在 CloudFront 与 Amazon S3 源之间使用 HTTPS 进行通信

当您的源是 Amazon S3 存储桶时,用于使用 HTTPS 以与 CloudFront 进行通信的选项取决于您使用存储桶的方式。如果您的 Amazon S3 存储桶配置为网站终端节点,则您无法将 CloudFront 配置为使用 HTTPS 与您的源进行通信,因为 Amazon S3 不支持该配置中的 HTTPS 连接。

当您的源是支持 HTTPS 通信的 Amazon S3 存储桶时,CloudFront 始终使用查看器用来提交请求的协议将请求转发到 S3。协议(仅自定义源) 的默认设置为匹配查看器,并且不能更改。

如果您希望要求在 CloudFront 和 Amazon S3 之间使用 HTTPS 进行通信,则必须将查看器协议策略的值更改为将 HTTP 重定向到 HTTPS仅 HTTPS。有关如何使用 CloudFront 控制台更改查看器协议策略的信息,请参阅本节后面的步骤。有关使用 CloudFront API 更新分配的 ViewerProtocolPolicy 元素的信息,请参阅 Amazon CloudFront API 参考中的 UpdateDistribution

当您将 HTTPS 与支持 HTTPS 通信的 Amazon S3 存储桶结合使用时,Amazon S3 会提供 SSL/TLS 证书,因此您无需提供。

要求 Amazon S3 源使用 HTTPS

以下步骤演示如何将 CloudFront 配置为要求通过 HTTPS 连接到您的 Amazon S3 源。

将 CloudFront 配置为要求通过 HTTPS 连接到您的 Amazon S3 源
  1. 登录 AWS Management Console,并通过以下网址打开 CloudFront 控制台:https://console.aws.amazon.com/cloudfront/v4/home

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

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

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

    将 HTTP 重定向到 HTTPS

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

    重要

    CloudFront 不将 DELETEOPTIONSPATCHPOSTPUT 请求从 HTTP 重定向到 HTTPS。如果您将一个缓存行为配置为重定向到 HTTPS,CloudFront 会针对该缓存行为的 HTTP DELETEOPTIONSPATCHPOSTPUT 请求响应 HTTP 状态代码 403(禁止访问)。

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

    HTTPS Only

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

  5. 选择是,编辑

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

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

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

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

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