View a markdown version of this page

配置备用域名和 HTTPS - Amazon CloudFront

配置备用域名和 HTTPS

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

获取 SSL/TLS 证书

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

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

    注意

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

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

导入 SSL/TLS 证书

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

ACM(推荐)

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

IAM 证书存储

(不推荐)请使用以下 AWS 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/

请注意以下几点:

  • 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 命令参考。

更新 CloudFront 分配

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

为备用域名配置您的 CloudFront 分配
  1. 登录 AWS 管理控制台,并通过以下网址打开 CloudFront 控制台:https://console.aws.amazon.com/cloudfront/v4/home。

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

  3. 在 General 选项卡上,选择 Edit。

  4. 更新以下值:

    备用域名(CNAME)

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

    自定义 SSL 证书

    从下拉列表中选择证书。

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

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

    重要

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

  5. 选择保存更改。

  6. 将 CloudFront 配置为要求查看器与 CloudFront 之间的通信为 HTTPS:

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

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

      将 HTTP 重定向到 HTTPS

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

      重要

      CloudFront 不将 DELETE、OPTIONS、PATCH、POST 或 PUT 请求从 HTTP 重定向到 HTTPS。如果您将一个缓存行为配置为重定向到 HTTPS,CloudFront 会针对该缓存行为的 HTTP DELETE、OPTIONS、PATCH、POST 或 PUT 请求响应 HTTP 状态代码 403 (Forbidden)。

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

      仅 HTTPS

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

    3. 选择是,编辑。

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

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

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

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

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