

# 在 CloudFront 中使用 SSL/TLS 证书的要求
<a name="cnames-and-https-requirements"></a>

本主题中介绍了 SSL/TLS 证书的要求。除非另有说明，否则这些要求均适用于以下两项：
+ 在查看器和 CloudFront 之间使用 HTTPS 的证书 
+ 在 CloudFront 和您的源之间使用 HTTPS 的证书

**Topics**
+ [证书颁发者](#https-requirements-certificate-issuer)
+ [用于 AWS Certificate Manager 的 AWS 区域](#https-requirements-aws-region)
+ [证书格式](#https-requirements-certificate-format)
+ [中间证书](#https-requirements-intermediate-certificates)
+ [密钥类型](#https-requirements-key-type)
+ [私有密钥](#https-requirements-private-key)
+ [权限](#https-requirements-permissions)
+ [证书密钥大小](#https-requirements-size-of-public-key)
+ [支持的证书类型](#https-requirements-supported-types)
+ [证书到期日期和续订](#https-requirements-cert-expiration)
+ [CloudFront 分配和证书中的域名](#https-requirements-domain-names-in-cert)
+ [最低 SSL/TLS 协议版本](#https-requirements-minimum-ssl-protocol-version)
+ [支持的 HTTP 版本](#https-requirements-supported-http-versions)

## 证书颁发者
<a name="https-requirements-certificate-issuer"></a>

建议您使用由 [AWS Certificate Manager（ACM）](https://aws.amazon.com/certificate-manager/)颁发的公有证书。有关从 ACM 获取证书的信息，请参阅 [AWS Certificate Manager 用户指南](https://docs.aws.amazon.com/acm/latest/userguide/)**。要在 CloudFront 分配中使用 ACM 证书，请确保您在美国东部（弗吉尼亚州北部）区域 (`us-east-1`) 中请求（或导入）该证书。

 CloudFront 与 Mozilla 支持相同的证书颁发机构 (CA)，因此如果您不使用 ACM，请使用 [Mozilla 包含的 CA 证书列表](https://wiki.mozilla.org/CA/Included_Certificates)中的 CA 颁发的证书。

您为 CloudFront 分配指定的源使用的 TLS 证书也需要从 Mozilla 包含的 CA 证书列表上的 CA 颁发。

有关获取和安装证书的更多信息，请参考 HTTP 服务器软件文档和 CA 文档。

## 用于 AWS Certificate Manager 的 AWS 区域
<a name="https-requirements-aws-region"></a>

要在 AWS Certificate Manager（ACM）中使用证书以要求在查看器和 CloudFront 之间使用 HTTPS，请确保您在美国东部（弗吉尼亚州北部）区域（`us-east-1`）中请求（或导入）该证书。

如果您需要在 CloudFront 和您的源之间使用 HTTPS，并且正在 Elastic Load Balancing 中使用负载均衡器作为源，则您可以在任何 AWS 区域中请求或导入证书。

## 证书格式
<a name="https-requirements-certificate-format"></a>

证书必须采用 X.509 PEM 格式。这是您使用 AWS Certificate Manager 时的原定设置格式。

## 中间证书
<a name="https-requirements-intermediate-certificates"></a>

如果您使用的是第三方证书颁发机构 (CA)，请在 `.pem` 文件的证书链中列出所有中间证书，从为您的域签署证书的 CA 所颁发的证书开始。通常，您将在以适当的链顺序列出中间证书和根证书的 CA 网站上找到文件。

**重要**  
请不要包括以下内容：根证书，未在信任路径中的中间证书，或者 CA 的公有密钥证书。

示例如下：

```
-----BEGIN CERTIFICATE-----
Intermediate certificate 2
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Intermediate certificate 1
-----END CERTIFICATE-----
```

## 密钥类型
<a name="https-requirements-key-type"></a>

CloudFront 支持 RSA 和 ECDSA 公有/私有密钥对。

CloudFront 支持使用 RSA 和 ECDSA 证书连接到查看器和源的 HTTPS 连接。借助 [AWS Certificate Manager（ACM）](https://console.aws.amazon.com/acm)，您可以请求和导入 RSA 或 ECDSA 证书，然后将它们与您的 CloudFront 分配相关联。

有关 CloudFront 支持的您可以在 HTTPS 连接中协商的 RSA 和 ECDSA 密码的列表，请参阅[查看器和 CloudFront 之间支持的协议和密码](secure-connections-supported-viewer-protocols-ciphers.md)和[CloudFront 与源之间受支持的协议和密码](secure-connections-supported-ciphers-cloudfront-to-origin.md)。

## 私有密钥
<a name="https-requirements-private-key"></a>

如果您使用的是来自第三方证书颁发机构 (CA) 的证书，请注意以下几点：
+ 私有密钥必须匹配证书中的公有密钥。
+ 私有密钥必须采用 PEM 格式。
+ 私有密钥无法使用密码加密。

如果 AWS Certificate Manager (ACM) 提供了证书，则 ACM 不会发布该私有密钥。私有密钥存储在 ACM 中，供与 ACM 集成的 AWS 服务使用。

## 权限
<a name="https-requirements-permissions"></a>

您必须具备使用和导入 SSL/TLS 证书的权限。如果您使用 AWS Certificate Manager (ACM)，建议您使用 AWS Identity and Access Management 权限以限制访问证书。有关更多信息，请参阅《AWS Certificate Manager 用户指南》**中的[身份和访问权限管理](https://docs.aws.amazon.com/acm/latest/userguide/security-iam.html)。

## 证书密钥大小
<a name="https-requirements-size-of-public-key"></a>

CloudFront 支持的证书密钥大小取决于密钥和证书类型。

**对于 RSA 证书：**  
CloudFront 支持 1024 位、2048 位、3072 位和 4096 位 RSA 密钥。用于 CloudFront 的 RSA 证书的最大密钥长度为 4096 位。  
 请注意，ACM 颁发密钥最多为 2048 位的 RSA 证书。要使用 3072 位或 4096 位 RSA 证书，您需要从外部获取该证书并将其导入 ACM，之后即可将其与 CloudFront 一起使用。  
有关如何确定 RSA 密钥大小的信息，请参阅[确定 SSL/TLS RSA 证书中公有密钥的大小](cnames-and-https-size-of-public-key.md)。

**对于 ECDSA 证书：**  
CloudFront 支持 256 位密钥。要在 ACM 中使用 ECDSA 证书以要求在查看器和 CloudFront 之间使用 HTTPS，请使用 prime256v1 椭圆曲线。

## 支持的证书类型
<a name="https-requirements-supported-types"></a>

CloudFront 支持可信的证书颁发机构颁发的所有类型的证书。

## 证书到期日期和续订
<a name="https-requirements-cert-expiration"></a>

如果您使用来自第三方证书颁发机构 (CA) 的证书，则您必须监控证书到期日期并在到期前续订导入到 AWS Certificate Manager (ACM) 或上载到 AWS Identity and Access Management 证书存储的证书。

**重要**  
为避免发生证书过期问题，请在当前证书的 `NotAfter` 值之前至少 24 小时续订或重新导入证书。如果您的证书将在 24 小时内过期，请从 ACM 申请新证书或将新证书导入 ACM。接下来，将新证书关联到 CloudFront 分配。  
在您的证书续订或重新导入过程中，CloudFront 可能会继续使用以前的证书。这是个异步过程，CloudFront 最长可能需要 24 小时才能显示您的更改。

如果您使用 ACM 提供的证书，则 ACM 会为您管理证书续订。有关更多信息，请参阅《AWS Certificate Manager 用户指南》**中的[托管续订](https://docs.aws.amazon.com/acm/latest/userguide/managed-renewal.html)。

## CloudFront 分配和证书中的域名
<a name="https-requirements-domain-names-in-cert"></a>

当您使用自定义源时，源上 SSL/TLS 证书的**公用名**字段中包含域名，**使用者备用名称**字段中可能包含更多域名。（CloudFront 支持证书域名中的通配符。） 

证书中的其中一个域名必须与您为“源域名”指定的域名匹配。如果没有任何域名匹配，CloudFront 会向查看器返回 HTTP 状态代码 `502 (Bad Gateway)`。

**重要**  
在将备用域名添加到分配时，CloudFront 会检查备用域名是否涵盖在您附加的证书中。证书必须在证书的使用者备用名称 (SAN) 字段中覆盖备用域名。这意味着，SAN 字段必须包含备用域名的完全匹配项，或者包含与要添加的备用域名级别相同的通配符。  
有关更多信息，请参阅[使用备用域名的要求](CNAMEs.md#alternate-domain-names-requirements)。

## 最低 SSL/TLS 协议版本
<a name="https-requirements-minimum-ssl-protocol-version"></a>

如果您使用的是专用 IP 地址，请通过选择安全策略来为查看器和 CloudFront 之间的连接选择最低 SSL/TLS 协议版本。

有关更多信息，请参阅 [安全策略（最低 SSL/TLS 版本）](DownloadDistValuesGeneral.md#DownloadDistValues-security-policy)主题中的 [所有分配设置参考](distribution-web-values-specify.md)。

## 支持的 HTTP 版本
<a name="https-requirements-supported-http-versions"></a>

如果您将一个证书与多个 CloudFront 分配关联，则与证书关联的所有分配都必须针对[支持的 HTTP 版本](DownloadDistValuesGeneral.md#DownloadDistValuesSupportedHTTPVersions)使用相同的选项。您在创建或更新 CloudFront 分配时指定此选项。