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

选择 CloudFront 提供 HTTPS 请求的方式

如果希望您的查看器使用 HTTPS 并对您的文件使用备用域名,您需要选择有关 CloudFront 如何处理 HTTPS 请求的以下选项之一:

  • 使用服务器名称指示 (SNI) - 建议

  • 在每个边缘站点使用专用 IP 地址

本部分说明了每个选项的工作方式。

使用 SNI 处理 HTTPS 请求(适用于大多数客户端)

服务器名称指示 (SNI) 是对 TLS 协议的扩展,2010 年以后发布的浏览器和客户端均支持。如果您将 CloudFront 配置为使用 SNI 处理 HTTPS 请求,则 CloudFront 将备用域名与每个边缘站点中的 IP 地址关联。当查看器提交针对内容的 HTTPS 请求时,DNS 将该请求传送到正确边缘站点的 IP 地址。指向您域名的 IP 地址在 SSL/TLS 握手协商期间确定;IP 地址并非专用于您的分发。

在建立 HTTPS 连接的过程的早期便进行了 SSL/TLS 协商。如果 CloudFront 无法立即确定该请求所针对的域,则它会中断连接。在支持 SNI 的查看器针对您的内容提交 HTTPS 请求时,将发生以下操作:

  1. 查看器自动从请求 URL 中获取域名,并将其添加到请求标头中的字段。

  2. 当 CloudFront 收到请求时,它会在请求标头中查找域名并使用适用的 SSL/TLS 证书响应该请求。

  3. 查看器和 CloudFront 执行 SSL/TLS 协商。

  4. CloudFront 将请求的内容返回到查看器。

有关支持 SNI 的浏览器的当前列表,请参阅 Wikipedia 条目服务器名称指示

如果您希望使用 SNI,但您的某些用户的浏览器不支持 SNI,则您有以下几种选择:

  • 配置 CloudFront 以使用专用 IP 地址而不是 SNI 来处理 HTTPS 请求。有关更多信息,请参阅 使用专用 IP 地址处理 HTTPS 请求(适用于所有客户端)

  • 使用 CloudFront SSL/TLS 证书而不是自定义证书。这要求您在文件的 URL(例如 https://d111111abcdef8.cloudfront.net/logo.png)中为您的分配使用 CloudFront 域名。

    如果您使用默认 CloudFront 证书,查看器必须支持 SSL 协议 TLSv1 或更高版本。CloudFront 不支持在 SSLv3 中使用默认 CloudFront 证书。

    您还需要将 CloudFront 使用的 SSL/TLS 证书从自定义证书更改为默认 CloudFront 证书:

    • 如果您尚未使用分配来分发内容,则只需更改配置。有关更多信息,请参阅 更新分配

    • 如果您已使用分配来分发内容,则需要创建新的 CloudFront 分配并更改文件的 URL,以便减少或消除内容不可用的时间。有关更多信息,请参阅 从自定义 SSL/TLS 证书恢复为默认 CloudFront 证书

  • 如果您可以控制用户使用的浏览器,请让用户将浏览器升级为支持 SNI 的浏览器。

  • 使用 HTTP 而不是 HTTPS。

使用专用 IP 地址处理 HTTPS 请求(适用于所有客户端)

服务器名称指示 (SNI) 是一种将请求与域关联的方法。另一种方法是使用专用 IP 地址。如果您的用户无法升级到 2010 年之后发布的浏览器或客户端,您可以使用专用 IP 地址为 HTTPS 请求提供服务。有关支持 SNI 的浏览器的当前列表,请参阅 Wikipedia 条目服务器名称指示

重要

如果您将 CloudFront 配置为使用专用 IP 地址处理 HTTPS 请求,则每月会产生额外的费用。一旦您将 SSL/TLS 证书与某个分配关联并启用该分配,就将开始计费。有关 CloudFront 定价的更多信息,请参阅 Amazon CloudFront 定价。另请参阅在多个 CloudFront 分发中使用同一个证书

当您将 CloudFront 配置为使用专用 IP 地址处理 HTTPS 请求时,CloudFront 将备用域名与每个 CloudFront 节点中的专用 IP 地址关联。在查看器针对您的内容提交 HTTPS 请求时,将发生以下操作:

  1. DNS 将请求路由到适用边缘站点中您的分配的 IP 地址。

  2. CloudFront 使用 IP 地址来识别您的分配,确定将哪个 SSL/TLS 证书返回到查看器。

  3. 查看器和 CloudFront 使用您的 SSL/TLS 证书执行 SSL/TLS 协商。

  4. CloudFront 将请求的内容返回到查看器。

此方法适用于每个 HTTPS 请求,无论用户使用的是浏览器还是其他查看器。