配置备用域名和 HTTPS - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

配置备用域名和 HTTPS

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

获取 SSL/TLS 证书

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

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

    注意

    我们建议您使用 ACM 在 Amazon 托管资源上预置、管理和部署 SSL/TLS 证书。您必须在美国东部(弗吉尼亚北部)区域申请 ACM 证书。

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

导入 SSL/TLS 证书

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

ACM(推荐)

ACM 可让您从 ACM 控制台以及以编程方式导入第三方证书。有关将证书导入 ACM 的信息,请参阅《Amazon Certificate Manager 用户指南》中的将证书导入 Amazon Certificate Manager。您必须在美国东部(弗吉尼亚北部)区域导入证书。

IAM 证书存储

(不推荐)请使用以下 Amazon CLI 命令将您的第三方证书上传到 IAM 证书存储。

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/

请注意以下几点:

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

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

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

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

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

有关 Amazon CLI 的更多信息,请参阅 Amazon Command Line Interface 用户指南Amazon CLI 命令参考

更新 CloudFront 分配

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

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

  1. 登录 Amazon Web Services Management Console,并通过以下网址打开 CloudFront 控制台:https://console.amazonaws.cn/cloudfront/v3/home

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

  3. General 选项卡上,选择 Edit

  4. 更新以下值:

    备用域名 (CNAME)

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

    SSL 证书

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

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

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

    重要

    在将您的 SSL/TLS 证书与您的 CloudFront 分配关联之后,在您从所有分配中删除该证书并且分配的状态已变为已部署前,请勿从 ACM 或 IAM 证书存储中删除该证书。

    支持的客户

    选择适用的选项:

    • 所有客户端: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 请求将自动重定向到 HTTPS 请求。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 (Forbidden) 且不会返回此文件。

    3. 选择是,编辑

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

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

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

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

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