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

配置备用域名和 HTTPS

要在您的文件的 URL 中使用备用域名并在查看器和 CloudFront 之间使用 HTTPS,请执行适用步骤。

请求使用三个或更多 SSL/TLS 证书的权限

如果您需要权限将三个或更多 SSL/TLS 专用 IP 证书与 CloudFront 永久关联,请执行以下步骤。有关 HTTPS 请求的更多信息,请参阅选择 CloudFront 提供 HTTPS 请求的方式

注意

此过程在您的多个 CloudFront 分配之间使用 3 个或更多专用 IP 证书。默认值是 2。请记住,您不能将多个 SSL 证书绑定到一个分配。

您一次只能将一个 SSL/TLS 证书与一个 CloudFront 分配关联。此数字是在您的所有 CloudFront 分配中可以使用的专用 IP SSL 证书的总数。

请求权限以在 CloudFront 分配中使用三个或更多证书

  1. 转到支持中心并创建案例。

  2. 注明您需要多少个证书的使用授权,并在请求中描述具体情况。我们将尽快更新您的账户。

  3. 继续执行下一个过程。

获取 SSL/TLS 证书

如果您还没有 SSL/TLS 账户,请获取一个。有关更多信息,请参阅相应文档:

  • 要使用 AWS Certificate Manager (ACM) 提供的证书,请参阅AWS Certificate Manager 用户指南。然后跳至更新您的 CloudFront 分配

    注意

    我们建议您使用 ACM 在 AWS 托管资源上预置、管理和部署 SSL/TLS 证书。

  • 要从第三方证书颁发机构 (CA) 获取证书,请参阅该证书颁发机构提供的文档。当您拥有该证书时,请继续执行下一个步骤。

  • 要创建自签名的证书,请参阅您正用于创建和签署证书的应用程序的相应文档。然后继续执行下一个步骤。

导入 SSL/TLS 证书

如果证书是从第三方 CA 获得的,请将证书导入到 ACM 或上传到 IAM 证书存储:

ACM (推荐)

通过使用 ACM,您可以从 ACM 控制台以及以编程方式导入第三方证书。有关将证书导入到 ACM 的信息,请参阅 AWS Certificate Manager 用户指南 中的将证书导入到 AWS Certificate Manager

IAM 证书存储

如果 ACM 在您所在的区域不可用,请使用以下 AWS CLI 命令将您的第三方证书上传到 IAM 证书存储中。(有关 ACM 可用的区域的列表,请参阅 Amazon Web Services 一般参考 的“AWS 区域和终端节点”一章中的 AWS Certificate Manager。)

aws iam upload-server-certificate --server-certificate-name CertificateName --certificate-body file://public_key_certificate_file --private-key file://privatekey.pem --certificate-chain file://certificate_chain_file --path /cloudfront/path/

请注意以下几点:

  • AWS 账户 – 您必须使用用于创建 CloudFront 分配的同一 AWS 账户将证书上传到 IAM 证书存储中。

  • --path 参数 – 在将证书上传到 IAM 时,-path 参数(证书路径)的值必须以 /cloudfront/ 开头,例如 /cloudfront/production//cloudfront/test/。该路径必须以 / 结尾。

  • 现有的证书 – 您必须指定 --server-certificate-name--path 参数的值,这些值不同于与现有证书关联的值。

  • 使用 CloudFront 控制台 – 您在 AWS CLI 中为 --server-certificate-name 参数指定的值(如 myServerCertificate)显示在 CloudFront 控制台的 SSL 证书列表中。

  • 使用 CloudFront API – 记下 AWS CLI 返回的字母数字字符串,例如 AS1A2M3P4L5E67SIIXR3J。这是您将在 IAMCertificateId 元素中指定的值。您无需 IAM ARN(也由 CLI 返回)。

有关 AWS CLI 的更多信息,请参阅 AWS Command Line Interface 用户指南AWS CLI Command Reference

更新您的 CloudFront 分配

要更新您的分配的设置,请执行以下步骤:

为备用域名配置您的 CloudFront 分配

  1. 登录 AWS 管理控制台,通过以下网址打开 CloudFront 控制台:https://console.amazonaws.cn/cloudfront/

  2. 为要更新的分配选择 ID。

  3. General 选项卡上,选择 Edit

  4. 更新以下值:

    备用域名 (CNAME)

    添加适用的备用域名。用逗号隔开多个域名,或在新行中键入每个域名。

    SSL 证书(仅限 Web 分配)

    选择自定义 SSL 证书,然后从列表中选择证书。

    此处列出了多达 100 个证书。如果您有超过 100 个证书并且您没有看到要添加的证书,则可以在字段中键入一个证书 ARN 以选择它。

    如果您已将证书上传到 IAM 证书存储,但该证书没有被列出,并且您无法通过在字段中键入名称来选择它,请查看过程导入 SSL/TLS 证书以确认您已正确上传证书。

    重要

    在将 SSL/TLS 证书与您的 CloudFront 分配关联后,不要从 ACM 或 IAM 证书存储中删除该证书,直到您从所有分配中删除该证书以及分配状态变为已部署

    支持的客户端 (仅限 Web 分配)

    选择适用的选项:

    • 所有客户端:CloudFront 使用专用 IP 地址提供您的 HTTPS 内容。如果您选择该选项,则当您将 SSL/TLS 证书与已启用的分配关联时,将产生额外的费用。有关更多信息,请参阅 Amazon CloudFront 定价

    • 仅限支持服务器名称指示 (SNI) 的客户端:不支持 SNI 的旧版浏览器或其他客户端必须使用其他方法访问您的内容。

    有关更多信息,请参阅 选择 CloudFront 提供 HTTPS 请求的方式

  5. 选择是,编辑

  6. 将 CloudFront 配置为要求在查看器和 CloudFront 之间使用 HTTPS:

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

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

      Redirect HTTP to HTTPS

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

      重要

      CloudFront 不会将 DELETEOPTIONSPATCHPOSTPUT 请求从 HTTP 重定向到 HTTPS。如果配置一个缓存行为以重定向到 HTTPS,CloudFront 将为该缓存行为的 HTTP DELETEOPTIONSPATCHPOSTPUT 请求返回 HTTP 状态代码 403 (Forbidden)。

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

      HTTPS Only

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

    3. 选择是,编辑

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

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

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

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

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