

# 配置备用域名和 HTTPS
<a name="cnames-and-https-procedures"></a>

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

**Topics**
+ [

## 获取 SSL/TLS 证书
](#cnames-and-https-getting-certificates)
+ [

## 导入 SSL/TLS 证书
](#cnames-and-https-uploading-certificates)
+ [

## 更新 CloudFront 分配
](#cnames-and-https-updating-cloudfront)

## 获取 SSL/TLS 证书
<a name="cnames-and-https-getting-certificates"></a>

如果您还没有 SSL/TLS 证书，请获取一个。有关更多信息，请参阅相应文档：
+ 要使用 AWS Certificate Manager (ACM) 提供的证书，请参阅 [AWS Certificate Manager 用户指南](https://docs.aws.amazon.com/acm/latest/userguide/)。然后跳至 [更新 CloudFront 分配](#cnames-and-https-updating-cloudfront)。
**注意**  
建议您使用 ACM 在 AWS 托管资源上预置、管理和部署 SSL/TLS 证书。您必须在美国东部（弗吉尼亚州北部）区域申请 ACM 证书。
+ 要从第三方证书颁发机构 (CA) 获取证书，请参阅该证书颁发机构提供的文档。当您拥有该证书时，请继续执行下一个步骤。

## 导入 SSL/TLS 证书
<a name="cnames-and-https-uploading-certificates"></a>

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

**ACM（推荐）**  
ACM 可让您从 ACM 控制台以及以编程方式导入第三方证书。有关将证书导入 ACM 的信息，请参阅《AWS Certificate Manager 用户指南》**中的[将证书导入 AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)。您必须在美国东部（弗吉尼亚州北部）区域导入证书。

**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 用户指南](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)和 [AWS CLI 命令参考](https://docs.aws.amazon.com/cli/latest/reference/)。

## 更新 CloudFront 分配
<a name="cnames-and-https-updating-cloudfront"></a>

要更新您的分配的设置，请执行以下步骤：<a name="cnames-and-https-updating-cloudfront-procedure"></a>

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

1. 登录 AWS 管理控制台，并通过以下网址打开 CloudFront 控制台：[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)。

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

1. 在 **General** 选项卡上，选择 **Edit**。

1. 更新以下值：  
**备用域名（CNAME）**  
选择**添加项目**，添加适用的备用域名。用逗号隔开多个域名，或在新行中键入每个域名。  
**自定义 SSL 证书**  
从下拉列表中选择证书。  
此处列出了多达 100 个证书。如果您有超过 100 个证书并且您没有看到要添加的证书，则可以在字段中键入一个证书 ARN 以选择它。  
如果您已将证书上传到 IAM 证书存储，但该证书没有被列出，并且您无法通过在字段中键入名称来选择它，请查看过程 [导入 SSL/TLS 证书](#cnames-and-https-uploading-certificates)以确认您已正确上传证书。  
在将您的 SSL/TLS 证书与您的 CloudFront 分配关联之后，在您从所有分配中删除该证书并且已部署所有分配之前，请勿从 ACM 或 IAM 证书存储中删除该证书。

1. 选择**保存更改**。

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

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

   1. 指定 **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)` 且不会返回此文件。

   1. 选择**是，编辑**。

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

1. 请确认以下内容，然后在生产环境中使用更新后的配置：
   + 每个缓存行为中的路径模式仅适用于您希望查看器使用 HTTPS 的请求。
   + 缓存行为按您希望 CloudFront 评估它们的顺序列出。有关更多信息，请参阅 [路径模式](DownloadDistValuesCacheBehavior.md#DownloadDistValuesPathPattern)。
   + 缓存行为将请求路由到正确的源。