CloudFront 与自定义源之间的通信需要 HTTPS - Amazon CloudFront

CloudFront 与自定义源之间的通信需要 HTTPS

您可以要求使用 HTTPS 在 CloudFront 与您的源之间的通信

注意

如果您的源是配置为网站终端节点的 Amazon S3 存储桶,则无法将 CloudFront 配置为将 HTTPS 与源结合使用,因为 Amazon S3 不支持对网站终端节点使用 HTTPS。

如需要求在 CloudFront 和您的源之间的需要使用 HTTPS,请按照本主题中的过程执行以下操作:

  1. 在您的分配中,更改源的 Origin Protocol Policy (源协议策略) 设置

  2. 在您的自定义源服务器上安装 SSL/TLS 证书(当您使用 Amazon S3 源或某些其他 AWS 源时,不需要执行此操作)。

更改 CloudFront 设置

以下过程介绍了如何配置 CloudFront 以使用 HTTPS 与 Elastic Load Balancing 负载均衡器、Amazon EC2 实例或其他自定义源进行通信。有关使用 CloudFront API 更新分配的信息,请参阅《Amazon CloudFront API 参考》中的 UpdateDistribution

将 CloudFront 配置为要求在 CloudFront 和您的自定义源之间使用 HTTPS
  1. 登录 AWS Management Console,并通过以下网址打开 CloudFront 控制台:https://console.aws.amazon.com/cloudfront/v3/home

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

  3. Origins 选项卡中,选择要更新的源,然后选择 Edit

  4. 更新以下设置:

    源协议策略

    为您的分配中的适用源更改源协议策略

    • 仅 HTTPS – CloudFront 仅使用 HTTPS 与自定义源进行通信。

    • 匹配查看器 – CloudFront 使用 HTTP 或 HTTPS 与自定义源进行通信,具体取决于查看器请求协议。例如,如果您源协议策略选择匹配查看器,并且查看器使用 HTTPS 从 CloudFront 请求对象,则 CloudFront 也会使用 HTTPS 将请求转发给您的源。

      只有在为查看器协议策略指定将 HTTP 重定向到 HTTPS仅 HTTPS 时,才能选择匹配查看器

      请注意,CloudFront 仅缓存对象一次,即使查看器使用 HTTP 和 HTTPS 协议发出请求。

    Origin SSL Protocols

    为您的分配中的适用源选择 Origin SSL Protocols。由于 SSLv3 协议的安全性较低,因此,建议您仅在源不支持 TLSv1 或更高版本的情况下选择 SSLv3。TLSv1 握手与 SSLv3 向后和向前兼容,但 TLSv1.1 和 TLSv1.2 不是这样。当您选择 SSLv3 时,CloudFront 发送 SSLv3 握手请求。

  5. 选择是,编辑

  6. 针对要求在 CloudFront 和您的自定义源之间使用 HTTPS 的其他每个源,重复步骤 3 到 5。

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

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

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

    • 缓存行为将请求路由到更改了源协议策略的源。

在自定义源上安装 SSL/TLS 证书

您可以在自定义源上使用来自以下来源的 SSL/TLS 证书:

  • 如果您的源是 Elastic Load Balancing 负载均衡器,则可以使用 AWS Certificate Manager (ACM) 提供的证书。您也可以使用信任的第三方证书颁发机构签署并导入 ACM 的证书。

  • 对于 Elastic Load Balancing 负载均衡器之外的源,您必须使用由信任的第三方证书颁发机构 (CA)(例如,Comodo、DigiCert 或 Symantec)签署的证书。

从源返回的证书必须包括以下域名之一:

  • 源的源域字段中的域名(CloudFront API 中的 DomainName 字段)。

  • Host 标头中的域名,如果缓存行为配置为将 Host 标头转发至源。

当 CloudFront 使用 HTTPS 与您的源进行通信时,CloudFront 会验证信任的证书颁发机构颁发的证书。CloudFront 与 Mozilla 支持相同的证书颁发机构。有关当前列表,请参阅 Mozilla 包含的 CA 证书列表。您无法使用自签名证书在 CloudFront 和您的源之间进行 HTTPS 通信。

重要

如果源服务器返回过期证书、无效证书或自签名证书,或者如果源服务器以错误顺序返回证书链,CloudFront 将中断 TCP 连接,向查看者返回 HTTP 错误代码 502(无效网关),并将 X-Cache 标头设置为 Error from cloudfront。此外,如果不存在完整的证书链(包括中间证书),则 CloudFront 将中断 TCP 连接。