

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS Certificate Manager 公共证书
<a name="gs-acm-request-public"></a>

请求公有证书后，必须如 [验证 AWS Certificate Manager 公有证书的域名所有权](domain-ownership-validation.md) 中所述验证域所有权。

公有 ACM 证书遵循 X.509 标准，并具有以下限制：
+ **名称：**必须使用符合 DNS 的主题名称。有关更多信息，请参阅 [域名](acm-concepts.md#concept-dn)。
+ **算法：**对于加密，证书私有密钥算法必须是 2048 位 RSA、256 位 ECDSA 或 384 位 ECDSA。
+ **有效期：**每个证书的有效期为 198 天。
+ **续订：**ACM 尝试在到期前 45 天自动续订公有证书。

**注意**  
公有 ACM 证书可以安装在连接到 [Nitro Enclave](acm-services.md#acm-nitro-enclave) 的 Amazon EC2 实例上。您也可以[导出公有证书](export-public-certificate.md)，以便在任何 Amazon EC2 实例上使用。有关在未连接到 Nitro Enclave 的 Amazon EC2 实例上设置独立 Web 服务器的信息，请参阅[教程：在 Amazon Linux 2 上安装 LAMP Web 服务器](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2.html)或者[教程：使用 Amazon Linux AMI 安装 LAMP Web 服务器](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html)。

管理员可以使用 ACM [条件密钥政策](https://docs.aws.amazon.com/acm/latest/userguide/acm-conditions.html)控制最终用户如何颁发新证书。这些条件密钥能够对域、验证方法以及与证书请求相关的其他属性施加限制。如果在请求证书时遇到问题，请参阅[排查证书请求问题](troubleshooting-cert-requests.md)。

要使用申请私有 PKI 的证书 AWS 私有 CA，请参阅[在中申请私有证书 AWS Certificate Manager请求私有证书](gs-acm-request-private.md)。

**Topics**
+ [AWS Certificate Manager 公共证书的特征和限制](acm-certificate-characteristics.md)
+ [在中申请公共证书 AWS Certificate Manager](acm-public-certificates.md)
+ [AWS Certificate Manager 可导出的公共证书](acm-exportable-certificates.md)
+ [验证 AWS Certificate Manager 公有证书的域名所有权](domain-ownership-validation.md)

# AWS Certificate Manager 公共证书的特征和限制
<a name="acm-certificate-characteristics"></a>

ACM 提供的公有证书具有以下特点和限制。这些仅适用于 ACM 提供的证书。这些特点和限制可能不适用于[导入的证书](import-certificate.md)。

**浏览器和应用程序信任**  <a name="trust-term"></a>
包括 Google Chrome、Microsoft Edge、Mozilla Firefox 和 Apple Safari 在内的所有主要浏览器均信任 ACM 证书。通过 TLS 连接到使用 ACM 证书的站点时，浏览器会显示锁定图标。Java 也信任 ACM 证书。

**证书颁发机构和层次结构**  <a name="authority-term"></a>
您通过 ACM 申请的公有证书是从 [Amazon Trust Services](https://www.amazontrust.com/repository/) 获得的，这是 Amazon 管理的公有[证书颁发机构 (CA)](https://docs.aws.amazon.com/acm/latest/userguide/acm-concepts.html#concept-ca)。Amazon 根 CAs 1 到 4 由 Starfield G2 根证书颁发机构 — G2 交叉签名。Starfield 根在 Android（较高的 Gingerbread 版本）和 iOS（版本 4.1 以上）上受到信任。Amazon 根在 iOS 11 以上受到信任。浏览器、应用程序或包 OSes 含 Amazon 或 Starfield 根目录将信任 ACM 公共证书。  
ACM 通过根据证书类型（RSA 或 ECDSA）随机分配的中间 CAs实体证书向客户颁发叶子或终端实体证书。由于这种随机选择，ACM 不提供中间 CA 信息。

**域名验证 (DV)**  <a name="domain-validation-term"></a>
ACM 证书经过域验证，只能识别域名。申请 ACM 证书时，必须证明所有指定域的所有权或控制权。您可以使用电子邮件或 DNS 来验证所有权。有关更多信息，请参阅[AWS Certificate Manager 电子邮件验证](email-validation.md)和[AWS Certificate Manager 域名系统验证DNS 验证](dns-validation.md)。

**HTTP 验证**  <a name="http-validation-term"></a>
在颁发用于的公共 TLS 证书时，ACM 支持通过 CloudFront HTTP验证进行域所有权验证。此方法使用 HTTP 重定向来证明域所有权，并提供类似于 DNS 验证的自动续订。HTTP 验证目前只能通过 “ CloudFront分发租户” 功能进行。

**HTTP 重定向**  <a name="http-redirect-term"></a>
对于 HTTP 验证，ACM 提供了 `RedirectFrom` 网址和 `RedirectTo` 网址。您必须设置从 `RedirectFrom` 到 `RedirectTo` 的重定向才能证明域控制权。`RedirectFrom`URL 包括经过验证的域，而`RedirectTo`指向 CloudFront 基础设施中 ACM 控制的位置，其中包含唯一的验证令牌。

**由... 管理**  <a name="managed-by-term"></a>
由其他服务管理的 ACM 中的证书在 `ManagedBy` 字段显示该服务的身份。对于使用 HTTP 验证的证书 CloudFront，此字段显示 “CLOUDFRONT”。这些证书只能通过使用 CloudFront。该`ManagedBy`字段出现在**DescribeCertificate**和**ListCertificates** APIs、ACM 控制台的证书清单和详细信息页面上。  
`ManagedBy` 字段与“可用于”属性相互排斥。对于 CloudFront托管证书，您无法通过其他 AWS 服务添加新的用法。您只能通过 CloudFront API 将这些证书与更多资源一起使用。

**中间和根 CA 轮换**  <a name="rotation-term"></a>
为了保持弹性的证书基础设施，Amazon 可以终止中间 CA，恕不另行通知。这些变化不会影响客户。有关更多信息，请参阅 ["Amazon introduces dynamic intermediate certificate authorities"](https://aws.amazon.com/blogs/security/amazon-introduces-dynamic-intermediate-certificate-authorities/)（Amazon 引入动态中间证书颁发机构）。  
如果 Amazon 终止根 CA，则将在需要时尽快执行此类变更。Amazon 将使用所有可用的方法通知 AWS 客户 Health Dashboard，包括发送电子邮件和联系技术客户经理。

**用于撤销的防火墙访问权限**  <a name="revocation-term"></a>
已吊销的最终实体证书使用 OCSP 和 CRLs 来验证和发布吊销信息。某些客户防火墙可能需要额外的规则才能使这些机制发挥作用。  
使用以下 URL 通配符模式来识别吊销流量：  
+ **OCSP**

  `http://ocsp.?????.amazontrust.com`

  `http://ocsp.*.amazontrust.com`
+ **CRL**

  `http://crl.?????.amazontrust.com/?????.crl`

  `http://crl.*.amazontrust.com/*.crl`
星号 (\$1) 代表一个或多个字母数字字符，问号 (?) 代表单个字母数字字符，哈希标记 (\$1) 代表数字。

**密钥算法**  <a name="algorithms-term"></a>
证书必须指定算法和密钥大小。ACM 支持以下 RSA 和 ECDSA 公有密钥算法：  
+ RSA 1024 位 (`RSA_1024`)
+ RSA 2048 位 (`RSA_2048`)\$1
+ RSA 3072 位 (`RSA_3072`)
+ RSA 4096 位 (`RSA_4096`)
+ ECDSA 256 位 (`EC_prime256v1`)\$1
+ ECDSA 384 位 (`EC_secp384r1`)\$1
+ ECDSA 521 位 (`EC_secp521r1`)
ACM 可以使用标有星号 (\$1) 的算法请求新证书。其余算法仅适用于[导入的](import-certificate.md)证书。  
对于由 AWS 私有 CA CA 签名的私有 PKI 证书，签名算法系列（RSA 或 ECDSA）必须与 CA 的密钥算法系列相匹配。
ECDSA 密钥比具有同等安全性的 RSA 密钥更小，计算效率更高，但并非所有网络客户端都支持 ECDSA。此表改编自 [NIST](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt1r5.pdf)，比较了 RSA 和 ECDSA 密钥大小（以位为单位）以获得同等安全优势：    
**比较算法和密钥的安全性**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/acm/latest/userguide/acm-certificate-characteristics.html)
安全强度为 2 的幂，与破解加密所需的猜测次数有关。例如，3072 位 RSA 密钥和 256 位 ECDSA 密钥都可以通过不超过 2128 次猜测来检索。  
有关选择算法的帮助，请参阅中的 AWS 博客文章《[如何评估和使用 ECDSA 证书](https://aws.amazon.com/blogs/security/how-to-evaluate-and-use-ecdsa-certificates-in-aws-certificate-manager/)》。 AWS Certificate Manager  
[集成服务](https://docs.aws.amazon.com/acm/latest/userguide/acm-services.html)仅允许将支持的算法和密钥大小用于其资源。支持情况因证书是导入到 IAM 还是 ACM 而有所差别。有关详细信息，请参阅每个服务的文档：  
+ 对于 Elastic Load Balancing，请参阅 [Application Load Balancer 的 HTTPS 侦听器](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html)。
+ 有关 CloudFront信息，请参阅[支持的 SSL/TLS 协议和密码](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/secure-connections-supported-viewer-protocols-ciphers.html)。

**托管续订和部署**  <a name="renewal-term"></a>
ACM 管理 ACM 证书的续订和预置。自动续订可以帮助避免因证书配置错误、吊销或过期而导致的停机。有关更多信息，请参阅 [中的托管证书续订 AWS Certificate Manager](managed-renewal.md)。

**多个域名**  <a name="multiple-domains-term"></a>
每个 ACM 证书必须至少包括一个完全限定域名 (FQDN)，并且可以包括其他名称。例如，`www.example.com` 的证书也可以包括 `www.example.net`。这也适用于裸域（机构根网域或裸域）。您可以为 www.example.com 请求证书并包括 example.com。有关更多信息，请参阅 [AWS Certificate Manager 公共证书](gs-acm-request-public.md)。

**punycode**  <a name="punycode-term"></a>
必须满足以下与[国际化域名](https://www.icann.org/resources/pages/idn-2012-02-25-en)有关的 [Punycode](https://datatracker.ietf.org/doc/html/rfc3492) 要求：  

1. 以“<character><character>--”模式开头的域名必须与“xn--”一致。

1. 以“xn--”开头的域名也必须是有效的国际化域名。  
**Punycode 示例**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/acm/latest/userguide/acm-certificate-characteristics.html)

**有效期**  <a name="validity-term"></a>
ACM 证书的有效期为 198 天。

**通配符名称**  <a name="wildcard-term"></a>
ACM 允许在域名中使用星号 (\$1) 来创建通配符证书，该证书可以保护同一个域中的多个站点。例如，`*.example.com` 可以保护 `www.example.com` 和 `images.example.com`。  
在通配符证书中，星号 (`*`) 必须位于域名的最左侧，而且只保护一个子域级别。例如，`*.example.com` 保护 `login.example.com` 和 `test.example.com`，但不保护 `test.login.example.com`。此外，`*.example.com` 仅*保护*子域，而不保护裸域或顶点域 (`example.com`)。您可以通过指定多个域名（例如 `example.com` 和 `*.example.com`）为裸域及其子域申请证书。  
如果您使用 CloudFront，请注意 HTTP 验证不支持通配符证书。对于通配符证书，必须使用 DNS 验证或电子邮件验证。我们建议 DNS 验证，因为它支持自动续订证书。

# 在中申请公共证书 AWS Certificate Manager
<a name="acm-public-certificates"></a>

您可以从 ACM 控制台或 API 申请 AWS Certificate Manager 公有证书。 AWS CLI您可以将这些证书与集成证书一起使用， AWS 服务 也可以将其导出以供外部使用 AWS 云。

以下列表描述了公有证书和可导出公有证书之间的区别。

**公有证书**  
使用集成了 Elastic Load Balancing、Amazon 和 Amazon CloudFront API Gateway AWS 服务 等集成的 ACM 公有证书。有关更多信息，请参阅 [与 ACM 集成的服务](acm-services.md)。  
无法导出在 2025 年 6 月 17 日之前创建的 ACM 公有证书。

**可导出公有证书**  
可导出的公共证书可 AWS 服务 与集成证书配合使用，也可以在外部 AWS 云使用。有关更多信息，请参阅[AWS Certificate Manager 可导出的公共证书](acm-exportable-certificates.md)和[与 ACM 集成的服务](acm-services.md)。您必须创建新的 ACM 公有证书并启用可导出功能，才能导出公有证书。

以下部分讨论如何申请、导出和吊销公有 ACM 证书。

**Topics**
+ [使用控制台请求公有证书](#request-public-console)
+ [使用 CLI 请求公有证书](#request-public-cli)

## 使用控制台请求公有证书
<a name="request-public-console"></a>

**请求 ACM 公有证书（控制台）**

1. 登录 AWS 管理控制台并在[https://console.aws.amazon.com/acm/家](https://console.aws.amazon.com/acm/home)中打开 ACM 控制台。

   选择**请求证书**。

1. 在 **Domain names**（域名）部分，键入您的域名。

   您可以使用完全限定域名 (FQDN)（例如 **www.example.com**），或者裸域名或顶点域名（例如 **example.com**）。您还可以在最左侧位置使用星号 (**\$1**) 作为通配符来保护同一域中的多个站点名称。例如，**\$1.example.com** 可以保护 **corp.example.com** 和 **images.example.com**。通配符名称将显示在 ACM 证书的 **Subject（主题）**字段和 **Subject Alternative Name（主题替代名称）**扩展中。

   请求通配符证书时，星号 (**\$1**) 必须位于域名的最左侧位置，而且只能保护一个子域级别。例如，**\$1.example.com** 可以保护 **login.example.com** 和 **test.example.com**，但不能保护 **test.login.example.com**。另请注意，**\$1.example.com** *仅*保护 **example.com** 的子域，而不保护裸域或顶点域 (**example.com**)。要同时保护二者，请参阅下一个步骤。
**注意**  
为满足 [RFC 5280](https://datatracker.ietf.org/doc/html/rfc5280) 要求，在此步骤中输入的域名（技术术语为“公用名”）的长度不能超过 64 个八位字节（字符），包括句点。但是，您（在下一步中）提供的每个后续主题替代名称 (SAN) 的长度最多可达 253 个八位字节。

   1. 要添加其他名称，请选择 **Add another name to this certificate (向此证书添加另一个名称)**，然后在文本框中键入名称。这对于同时保护裸域或顶点域（例如 **example.com**）及其子域（例如 **\$1.example.com**）非常有用。

1. 如果要创建 ACM 可导出公有证书，请选择**启用导出**选项。您将能够访问证书的私有密钥并在 AWS 云之外使用它。有关更多信息，请参阅 [AWS Certificate Manager 可导出的公共证书](acm-exportable-certificates.md)。

1. 在 **Validation method**（验证方法）部分，根据您的需要选择 **DNS validation – recommended**（DNS 验证 – 推荐）或 **Email validation**（电子邮件验证）。
**注意**  
如果您可以编辑 DNS 配置，建议使用 DNS 域验证而不是电子邮件验证。相对于电子邮件验证，DNS 验证有多种优势。请参阅[AWS Certificate Manager 域名系统验证DNS 验证](dns-validation.md)。

   ACM 在颁发证书之前，会验证您是否拥有或控制证书请求中的域名。您可以使用电子邮件验证或 DNS 验证。

   1. 如果选择电子邮件验证，则 ACM 会将验证电子邮件发送到您在域名字段中指定的域。如果指定了验证域，则 ACM 会改为将该电子邮件发送到该验证域。有关电子邮件验证的更多信息，请参阅[AWS Certificate Manager 电子邮件验证](email-validation.md)。

   1. 如果使用 DNS 验证，则只需将 ACM 提供的别名记录写入您的 DNS 配置。有关 DNS 验证的更多信息，请参阅[AWS Certificate Manager 域名系统验证DNS 验证](dns-validation.md)。

1. 在**密钥算法**部分中，选择一种算法。

1. 在 **Tags**（标签）页面上，您可以选择为证书添加标签。标签是键值对，用作识别和组织 AWS 资源的元数据。有关 ACM 标签参数的列表以及有关如何在创建证书后向证书添加标签的说明，请参阅 [为 AWS Certificate Manager 资源添加标签](tags.md)。

   完成添加标签后，选择 **Request**（请求）。

1. 处理请求后，控制台将返回证书列表，其中会显示有关新证书的信息。

   在接到请求时，证书的状态将变为 **Pending validation**（等待验证），除非因故障排除主题[证书请求失败](https://docs.aws.amazon.com/acm/latest/userguide/troubleshooting-cert-requests.html#troubleshooting-failed)中列出的任何原因导致请求失败。ACM 重复尝试验证书达 72 小时，然后超时。如果证书的状态显示为 **Failed**（已失败）或 **Validation timed out**（验证超时），则删除请求，更正 [DNS 验证](https://docs.aws.amazon.com/acm/latest/userguide/dns-validation.html)或[电子邮件验证](https://docs.aws.amazon.com/acm/latest/userguide/email-validation.html)问题，然后重试。如果验证成功，则证书的状态将变为 **Issued**（已颁发）。
**注意**  
根据您对列表排序的方式，您要查找的证书可能不会立即可见。您可以点击右侧的黑色三角形来更改顺序。您还可以使用右上角的页码浏览多页证书。

## 使用 CLI 请求公有证书
<a name="request-public-cli"></a>

在命令行上使用 [request-certificate](https://docs.aws.amazon.com/cli/latest/reference/acm/request-certificate.html) 命令请求新的公有 ACM 证书。验证方法的可选值是 DNS 和 EMAIL（电子邮件）。密钥算法的可选值是 RSA\$12048（如果未明确提供参数，则为默认值）、EC\$1prime256v1 和 EC\$1secp384r1。

```
aws acm request-certificate \
--domain-name www.example.com \
--key-algorithm EC_Prime256v1 \
--validation-method DNS \
--idempotency-token 1234 \
--options CertificateTransparencyLoggingPreference=DISABLED,Export=ENABLED
```

此命令输出新公有证书的 Amazon Resource Name (ARN)。

```
{
    "CertificateArn": "arn:aws:acm:Region:444455556666:certificate/certificate_ID"
}
```

# AWS Certificate Manager 可导出的公共证书
<a name="acm-exportable-certificates"></a>

AWS Certificate Manager 可导出的公有证书允许您在任何地方预置、管理和部署 [SSL/TLS 证书，包括 Amazon EC2 实例、容器和本地主机](acm-concepts.md#concept-sslcert)。此功能将 ACM 颁发的公共证书扩展到集成的范围之外 AWS 服务，使您可以集中控制整个基础架构中的证书。

## 优势
<a name="acm-exportable-certificates-benefits"></a>

以下内容概述了 ACM 可导出公有证书的优势：
+ *简化证书管理*：使用 ACM 集中管理所有资源的证书。
+ *更快地颁发证书*：在更短的时间内访问和使用证书。
+ *自动续订*：ACM 会自动处理证书续订，并在新证书准备好部署时通知您。有关更多信息，请参阅 [亚马逊对 ACM 的 EventBridge 支持](supported-events.md)。
+ *成本效益*：只需为您创建的可导出公有证书付费。
+ *灵活部署*：在任何支持标准 [SSL/TLS 证书](acm-concepts.md#concept-sslcert)的服务器或应用程序上使用证书。

## ACM 可导出公有证书的工作原理
<a name="acm-exportable-certificates-how-it-works"></a>

以下内容概述了 ACM 可导出公有证书的工作原理：

1. 通过 ACM 为您的域申请可导出证书。

1. 通过 DNS 或电子邮件验证来验证域所有权。

1. 导出证书、私有密钥和证书链。

1. 将证书部署到您的服务器或应用程序。

1. ACM 管理续订，并在有新证书可用时发送通知。

## 安全注意事项
<a name="acm-exportable-certificates-security"></a>

以下是使用 ACM 可导出公有证书时的安全注意事项。有关更多信息，请参阅 [中的数据保护 AWS Certificate Manager](data-protection.md)。
+ 使用安全的存储和访问控制来保护导出的私有密钥。
+ 如果您怀疑密钥泄露，请使用 ACM 的撤销功能。
+ 部署续订的证书时，请实施适当的密钥轮换过程。

## 限制
<a name="acm-exportable-certificates-limitations"></a>

以下是一些 ACM 证书限制：
+ 证书的有效期为 198 天。
+ ACM 会续订在到期日期前 45 天到期的证书。
+ 您必须管理导出证书的部署过程。

## 定价
<a name="acm-exportable-certificates-pricing"></a>

使用您创建的可导出公共 SSL/TLS 证书需要支付额外费用。 AWS Certificate Manager有关最新的 ACM 定价信息，请参阅 AWS 网站上的[AWS Certificate Manager 服务定价](https://aws.amazon.com//certificate-manager/pricing/)页面。

## 最佳实践
<a name="acm-exportable-certificates-best-practices"></a>

以下是使用 ACM 证书时的一些最佳实践：
+ 续订证书之后，您应该立即开始使用。
+ 测试并实施续订证书的自动部署流程。
+ 使用 [Amazon EventBridge 指标和警报](supported-events.md)监控证书部署。

# 导出 AWS Certificate Manager 公共证书
<a name="export-public-certificate"></a>

以下过程将引导您了解如何在 ACM 控制台中导出 ACM 公有证书。或者，您可以使用[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/acm/export-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/acm/export-certificate.html) AWS CLI 或 [ExportCertificate](https://docs.aws.amazon.com//acm/latest/APIReference/API_ExportCertificate.html)API 操作。

**注意**  
无法导出在 2025 年 6 月 17 日之前创建的 ACM 公有证书。

## 导出公有证书（控制台）
<a name="console-procedures"></a>

1. 登录 AWS 管理控制台 并打开 ACM 控制台，网址为。[https://console.aws.amazon.com/acm/](https://console.aws.amazon.com/acm/)

1. 选择**列出证书**，然后选中要导出的证书的复选框。

   1. 或者，您可以选择证书。在证书详细信息页面中，选择**导出**。

1. 选择**更多操作**，然后选择**导出**。

1. 输入并确认私有密钥的密码。

1. 您可以下载或复制证书文件。
**注意**  
在 ACM 控制台中，您能够导出 .pem 证书文件。您可以将 .pem 文件转换为另一种文件格式，例如 .ppk。有关更多信息，请参阅此 [re:Post 文章](https://repost.aws/knowledge-center/ec2-ppk-pem-conversion)。

## 导出公有证书 (AWS CLI)
<a name="cli-procedures"></a>

使用[https://docs.aws.amazon.com/cli/latest/reference/acm/export-certificate.html](https://docs.aws.amazon.com/cli/latest/reference/acm/export-certificate.html) AWS CLI 命令或 [ExportCertificate](https://docs.aws.amazon.com//acm/latest/APIReference/API_ExportCertificate.html)API 操作导出公有证书和私钥。运行命令时，您必须指定密码。为了提高安全性，请使用文件编辑器将密码短语存储在文件中，然后通过提供文件来提供密码短语。这样可以防止密码存储在命令历史记录中，并防止在您键入密码时其他人看到密码。

**注意**  
包含该密码的文件不得以行终止符结尾。您可以如下所示检查密码文件：

```
$ file -k passphrase.txt
passphrase.txt: ASCII text, with no line terminators
```

以下示例将命令输出发送到 `jq` 以便应用 PEM 格式。

```
[Windows/Linux]$ aws acm export-certificate \
    --certificate-arn arn:aws:acm:us-east-1:111122223333:certificate/certificate_ID \
    --passphrase fileb://path-to-passphrase-file  \
    | jq -r '"\(.Certificate)\(.CertificateChain)\(.PrivateKey)"'
```

这会输出 base64 编码的 PEM 格式证书，还包含证书链和加密的私有密钥，如下面的简短示例所示。

```
-----BEGIN CERTIFICATE-----
MIIDTDCCAjSgAwIBAgIRANWuFpqA16g3IwStE3vVpTwwDQYJKoZIhvcNAQELBQAw
EzERMA8GA1UECgwIdHJvbG9sb2wwHhcNMTkwNzE5MTYxNTU1WhcNMjAwODE5MTcx
NTU1WjAXMRUwEwYDVQQDDAx3d3cuc3B1ZHMuaW8wggEiMA0GCSqGSIb3DQEBAQUA
...
8UNFQvNoo1VtICL4cwWOdLOkxpwkkKWtcEkQuHE1v5Vn6HpbfFmxkdPEasoDhthH
FFWIf4/+VOlbDLgjU4HgtmV4IJDtqM9rGOZ42eFYmmc3eQO0GmigBBwwXp3j6hoi
74YM+igvtILnbYkPYhY9qz8h7lHUmannS8j6YxmtpPY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIC8zCCAdugAwIBAgIRAM/jQ/6h2/MI1NYWX3dDaZswDQYJKoZIhvcNAQELBQAw
EzERMA8GA1UECgwIdHJvbG9sb2wwHhcNMTkwNjE5MTk0NTE2WhcNMjkwNjE5MjA0
NTE2WjATMREwDwYDVQQKDAh0cm9sb2xvbDCCASIwDQYJKoZIhvcNAQEBBQADggEP
...
j2PAOviqIXjwr08Zo/rTy/8m6LAsmm3LVVYKLyPdl+KB6M/+H93Z1/Bs8ERqqga/
6lfM6iw2JHtkW+q4WexvQSoqRXFhCZWbWPZTUpBS0d4/Y5q92S3iJLRa/JQ0d4U1
tWZyqJ2rj2RL+h7CE71XIAM//oHGcDDPaQBFD2DTisB/+ppGeDuB
-----END CERTIFICATE-----
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFKzBVBgkqhkiG9w0BBQ0wSDAnBgkqhkiG9w0BBQwwGgQUMrZb7kZJ8nTZg7aB
1zmaQh4vwloCAggAMB0GCWCGSAFlAwQBKgQQDViroIHStQgNOjR6nTUnuwSCBNAN
JM4SG202YPUiddWeWmX/RKGg3lIdE+A0WLTPskNCdCAHqdhOSqBwt65qUTZe3gBt
...
ZGipF/DobHDMkpwiaRR5sz6nG4wcki0ryYjAQrdGsR6EVvUUXADkrnrrxuHTWjFl
wEuqyd8X/ApkQsYFX/nhepOEIGWf8Xu0nrjQo77/evhG0sHXborGzgCJwKuimPVy
Fs5kw5mvEoe5DAe3rSKsSUJ1tM4RagJj2WH+BC04SZWNH8kxfOC1E/GSLBCixv3v
+Lwq38CEJRQJLdpta8NcLKnFBwmmVs9OV/VXzNuHYg==
-----END ENCRYPTED PRIVATE KEY-----
```

要将所有内容输出到文件，请将 `>` 重定向附加到上面的示例中，从而生成如下命令：

```
$ aws acm export-certificate \
     --certificate-arn arn:aws:acm:us-east-1:111122223333:certificate/certificate_ID \
     --passphrase fileb://path-to-passphrase-file \
     | jq -r '"\(.Certificate)\(.CertificateChain)\(.PrivateKey)"' \
     > /tmp/export.txt
```

# 使用 ACM 证书保护 Kubernetes 工作负载
<a name="exportable-certificates-kubernetes"></a>

您可以将可导 AWS Certificate Manager 出的公共证书与 Kubernetes AWS 控制器 (ACK) 一起使用，将 ACM 中的公共 TLS 证书颁发并导出到您的 Kubernetes 工作负载。这种集成使您能够保护亚马逊 Elastic Kubernetes Service (Amazon EKS) Pod 的安全，并在您的 Kubernetes 入口处终止 TLS。要开始使用，请参阅适用于 [Kubernetes 的 ACM 控制器](https://github.com/aws-controllers-k8s/acm-controller)。 GitHub

AWS 适用于 Kubernetes 的控制器 (ACK) 扩展了 Kubernetes API，使其能够使用原生 Kubernetes 清单来管理资源 AWS 。ACM 的 ACK 服务控制器在您的 Kubernetes 工作流程中提供自动化的证书生命周期管理。当你在 Kubernetes 中创建 ACM 证书资源时，ACK 控制器会执行以下操作：

1. 向 ACM 请求证书，ACM 会生成证书签名请求 (CSR)。

1. 等待域验证完成以及 ACM 颁发证书。

1. 如果指定了该`exportTo`字段，则导出已颁发的证书和私钥并将其存储在您指定的 Kubernetes 密钥中。

1. 如果指定了该`exportTo`字段并且证书符合续订条件，则会在到期前使用续订的证书更新 Kubernetes 密钥。

公开发行的证书需要经过[域验证后](https://docs.aws.amazon.com//acm/latest/userguide/dns-validation.html)，ACM 才能颁发证书。您可以使用[适用于 Amazon Route 53 的 ACK 服务控制器](https://github.com/aws-controllers-k8s/route53-controller)在您的托管区域中自动创建所需的 DNS 验证别名记录。

## 证书使用选项
<a name="kubernetes-ack-certificate-usage"></a>

您可以通过以下几种方式将 ACM 证书与 Kubernetes 配合使用：

![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/acm/latest/userguide/images/kubernetes-acm.png)


1. *负载均衡器终止（不导出）*：通过 ACK 颁发证书，并使用它们在 AWS 负载均衡器上终止 TLS。证书保留在 ACM 中，并由 Loa [AWS d Balancer 控制器](https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.1/guide/ingress/cert_discovery/)自动发现。这种方法不需要导出证书。

1. *入口终止（使用导出）*：从 ACM 导出证书并将其存储在 Kubernetes 密钥中，以便在入口级别终止 TLS。这使您可以直接在 Kubernetes 工作负载中使用证书。

**注意**  
有关需要私有证书的用例，请参阅证书管理器插件 [Kubernetes AWS 专用 CA 连接器](https://docs.aws.amazon.com//privateca/latest/userguide/PcaKubernetes-concepts.html)。

## 先决条件
<a name="kubernetes-ack-prerequisites"></a>

在安装 ACM 的 ACK 服务控制器之前，请确保具备以下条件：
+ 一个 Kubernetes 集群。
+ Helm 已安装。
+ `kubectl` 配置为与集群通信。
+ `eksctl`安装用于在 EKS 上配置 pod 身份关联。

## 为 ACM 安装 ACK 服务控制器
<a name="kubernetes-ack-installation"></a>

使用 Helm 在你的 Amazon EKS 集群中安装 ACM 的 ACK 服务控制器。

1. 为 ACK 控制器创建命名空间。

   ```
   $ kubectl create namespace ack-system --dry-run=client -o yaml | kubectl apply -f -
   ```

1. 为 ACK 控制器创建 pod 身份关联。*CLUSTER\$1NAME*替换为您的集群*REGION*名称和您的 AWS 区域。

   ```
   $ eksctl create podidentityassociation --cluster CLUSTER_NAME --region REGION \
       --namespace ack-system \
       --create-service-account \
       --service-account-name ack-acm-controller \
       --permission-policy-arns arn:aws:iam::aws:policy/AWSCertificateManagerFullAccess
   ```

1. 登录 Amazon ECR 公共注册表。

   ```
   $ aws ecr-public get-login-password --region us-east-1 | helm registry login --username AWS --password-stdin public.ecr.aws
   ```

1. 为 ACM 安装 ACK 服务控制器。替换*REGION*为你所在 AWS 的地区。

   ```
   $ helm install -n ack-system ack-acm-controller oci://public.ecr.aws/aws-controllers-k8s/acm-chart --set serviceAccount.create=false --set serviceAccount.name=ack-acm-controller --set aws.region=REGION
   ```

1. 验证控制器是否正在运行。

   ```
   $ kubectl get pods -n ack-system
   ```

有关容器身份关联的更多信息，请参阅 *Amazon EKS 用户指南中的 E* [KS 容器身份](https://docs.aws.amazon.com//eks/latest/userguide/pod-identities.html)。

## 示例：在入口处终止 TLS
<a name="kubernetes-ack-example"></a>

以下示例演示如何导出 ACM 证书并使用它在 Kubernetes 入口级别终止 TLS。此配置创建 ACM 证书，将其导出到 Kubernetes 密钥，并配置一个 Ingress 资源以使用该证书终止 TLS。

在本示例中：
+ 创建密钥是为了存储导出的证书 (`exported-cert-secret`)
+ ACK 证书资源向 ACM 请求您的域名的证书，然后将其导出到`exported-cert-secret`密钥。
+ Ingress 资源引用，`exported-cert-secret`以终止传入流量的 TLS。

将 `${HOSTNAME}` 替换为您的域名。

```
apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
  name: exported-cert-secret
  namespace: demo-app
data:
  tls.crt: ""
  tls.key: ""
---
apiVersion: acm.services.k8s.aws/v1alpha1
kind: Certificate
metadata:
  name: exportable-public-cert
  namespace: demo-app
spec:
  domainName: ${HOSTNAME}
  options:
    certificateTransparencyLoggingPreference: ENABLED
  exportTo: 
    namespace: demo-app
    name: exported-cert-secret
    key: tls.crt
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-traefik
  namespace: demo-app
spec:
  tls:
  - hosts:
    - ${HOSTNAME}
    secretName: exported-cert-secret
  ingressClassName: traefik
  rules:
  - host: ${HOSTNAME}
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: whoami
            port:
              number: 80
```

部署后，ACM 的 ACK 服务控制器会自动管理证书生命周期，包括续订。当 ACM 续订证书时，控制器会使用新证书更新 S `exported-cert-secret` ecret，从而确保您的 Ingress 无需手动干预即可继续使用有效证书。

# 吊销 AWS Certificate Manager 公共证书
<a name="revoke-certificate"></a>

您可以使用 ACM 控制台或 API 操作吊销可 AWS Certificate Manager 导出的公共证书。 AWS CLI

**警告**  
证书被吊销后，您将无法重复使用该证书。吊销证书是永久性的。

您可能需要吊销证书，以遵守贵组织的政策或减少密钥泄露风险。吊销证书时需要说明理由。可以使用以下原因：
+ 未指定
+ 从属关系已更改
+ Superseded
+ 停止操作

要了解更多信息，请参阅[《亚马逊信托服务证书订阅用户协议》](https://www.amazontrust.com/repository/sa-1.3.pdf)和[《亚马逊信任服务》](https://www.amazontrust.com/repository/)。

AWS 提供两种检查证书吊销的服务：在线证书状态协议 (OCSP) 和证书吊销列表。使用 OCSP，客户端可以查询实时返回状态的权威吊销数据库。OCSP 依赖于证书中嵌入的验证信息。

## 注意事项
<a name="revoke-considerations"></a>

以下是吊销证书之前的注意事项：
+ 您只能吊销之前导出的证书。
+ 您不能吊销[不可导出的公有证书](acm-exportable-certificates.md)。如果您不再需要这些证书，则应[将其删除](gs-acm-delete.md)。
+ 如果您不再需要该证书，则应[删除证书](gs-acm-delete.md)，而不是吊销证书。
+ 证书吊销过程是全局性的。您选择吊销的所有有效证书及其关联证书都将被吊销。 ARNs
+ 证书吊销是永久性的。您无法检索已吊销的证书供重复使用。
+ 吊销证书最长可能需要 24 小时才会生效。

## 吊销证书（控制台）
<a name="revoke-certificate-console"></a>

以下过程将引导您了解如何吊销 ACM 公有证书或私有证书。

1. 登录 AWS 管理控制台 并打开 ACM 控制台，网址为。[https://console.aws.amazon.com/acm/](https://console.aws.amazon.com/acm/)

1. 选择**列出证书**，然后选中要吊销的证书的复选框。

   1. 或者，您可以选择证书。在证书详细信息页面中，选择**吊销**。

1. 选择**更多操作**，然后选择**吊销**。

1. 将出现一个对话框，您必须在其中提供吊销原因，输入 **revoke**，然后选择**吊销**。

## 吊销证书 (AWS CLI)
<a name="revoke-certificate-cli"></a>

使用[https://docs.aws.amazon.com//cli/latest/reference/acm-pca/revoke-certificate.html](https://docs.aws.amazon.com//cli/latest/reference/acm-pca/revoke-certificate.html) AWS CLI 命令或 [https://docs.aws.amazon.com/acm/latest/APIReference/API_RevokeCertificate.html](https://docs.aws.amazon.com/acm/latest/APIReference/API_RevokeCertificate.html)API 操作吊销 ACM 公有或私有证书。您可以通过调用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/acm/list-certificates.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/acm/list-certificates.html) 命令来检索证书的 ARN。

```
$ aws acm revoke-certificate \
    --certificate-arn arn:aws:acm:us-east-1:111122223333:certificate/12345678-1234-1234-1234 \
    --revocation-reason "UNSPECIFIED"
```

**警告**  
证书被吊销后，您将无法重复使用该证书。吊销证书是永久性的。

下面是 `revoke-certificate` 命令的输出。

```
arn:aws:acm:us-east-1:111122223333:certificate/12345678-1234-1234-1234
```

# 配置自动续订事件
<a name="configure-auto-renewals-events"></a>

 AWS Certificate Manager 借助可导出的公共证书和 Amazon EventBridge，您可以配置自动证书续订事件。

1. 设置 Amazon EventBridge 活动以监控证书续订情况。有关更多信息，请参阅 [Amazon EventBridge 对 ACM 的支持](https://docs.aws.amazon.com//acm/latest/userguide/cloudwatch-events.html)。

1. 创建自动化，以便在续订时处理证书部署。有关更多信息，请参阅 [EventBridge 在 ACM 中向亚马逊发起行动](example-actions.md)。

1. 配置 EventBridge 事件以提醒您任何续订或部署失败。

# 强制续订证书
<a name="force-certificate-renewal"></a>

您可以通过 ACM 控制台、续订证书或 API 操作[续订 ACM 公有和私有证书](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/acm/renew-certificate.html) AWS CLI。[https://docs.aws.amazon.com/acm/latest/APIReference/API_RenewCertificate.html](https://docs.aws.amazon.com/acm/latest/APIReference/API_RenewCertificate.html)您只能续订之前导出的证书。

**重要**  
续订 ACM 可导出公有证书时，您需要支付额外费用。有关最新的 ACM 定价信息，请参阅 AWS 网站上的[AWS Certificate Manager 服务定价](https://aws.amazon.com//certificate-manager/pricing/)页面。

## 续订证书（控制台）
<a name="renew-certificate-console"></a>

以下过程将引导您了解如何强制续订 ACM 公有证书或私有证书。

1. 登录 AWS 管理控制台 并打开 ACM 控制台，网址为。[https://console.aws.amazon.com/acm/](https://console.aws.amazon.com/acm/)

1. 选择**列出证书**，然后选中要续订的证书的复选框。

   1. 或者，您可以选择证书。在证书详细信息页面中，选择**续订**。

1. 选择**更多操作**，然后选择**续订**。

1. 将出现一个对话框，您必须在其中输入 **renew**，然后选择**续订**。

## 续订证书 (AWS CLI)
<a name="renew-certificate-cli"></a>

使用[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/acm/renew-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/acm/renew-certificate.html) AWS CLI 命令或 [https://docs.aws.amazon.com/acm/latest/APIReference/API_RenewCertificate.html](https://docs.aws.amazon.com/acm/latest/APIReference/API_RenewCertificate.html)API 操作续订 ACM 公有或私有证书。您可以通过调用 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/acm/list-certificates.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/acm/list-certificates.html) 命令来检索证书的 ARN。`renew-certificate` 命令不返回响应。

```
$ aws acm renew-certificate \
    --certificate-arn arn:aws:acm:us-east-1:111122223333:certificate/12345678-1234-1234-1234-123456789012
```

# 验证 AWS Certificate Manager 公有证书的域名所有权
<a name="domain-ownership-validation"></a>

在 Amazon 证书颁发机构 (CA) 能够为您的网站颁发证书以前， AWS Certificate Manager (ACM) 必须先确认您拥有或可以控制请求中指定的所有域名。在申请证书时，您可以选择通过域名系统 (DNS) 验证、电子邮件验证或 HTTP 验证来证明您的所有权。

**注意**  
验证仅适用于 ACM 颁发的公开信任证书。ACM 不会验证[导入的证书](import-certificate.md)或由私有 CA 签名的证书的域所有权。ACM 无法验证 Amazon VPC [私有托管区](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-private-hosted-zones)或任何其他私有域中的资源。有关更多信息，请参阅 [排查证书验证问题](certificate-validation.md)。

我们建议使用 DNS 验证而不是电子邮件验证，原因如下：
+ 如果您使用 Amazon Route 53 管理您的公有 DNS 记录，则可以直接通过 ACM 更新您的记录。
+ 只要证书正在使用中，并且别名记录保持存在，ACM 就会自动续订 DNS 验证的证书。
+ 通过电子邮件验证的证书需要域拥有者执行操作才能续订。ACM 会在到期前 45 天开始发送续订通知。这些通知将发送到该域的五个常用管理员地址中的一个或多个地址。通知中包含一个链接，域拥有者可以单击该链接以轻松续订。验证所有列出的域后，ACM 会颁发具有相同 ARN 的续订证书。

如果您无法编辑域的 DNS 数据库，则必须使用[电子邮件验证](email-validation.md)。

HTTP 验证适用于与一起使用的证书 CloudFront。此方法使用 HTTP 重定向来证明域所有权，并提供类似于 DNS 验证的自动续订。

**注意**  
在创建采用电子邮件验证的证书后，您无法切换到使用 DNS 对其进行验证。要使用 DNS 验证，请删除该证书，然后创建一个使用 DNS 验证的新证书。

**Topics**
+ [AWS Certificate Manager 域名系统验证](dns-validation.md)
+ [AWS Certificate Manager 电子邮件验证](email-validation.md)
+ [AWS Certificate Manager HTTP 验证](http-validation.md)

# AWS Certificate Manager 域名系统验证
<a name="dns-validation"></a>

域名系统 (DNS) 是连接到网络的资源的目录服务。DNS 提供商维护一个包含定义域的记录的数据库。如果选择 DNS 验证，ACM 会提供一条或多条别名记录，这些记录必须添加到此数据库。这些记录包含一个唯一的键值对，用于证明您对该域具有控制权。

**注意**  
在创建采用电子邮件验证的证书后，您无法切换到使用 DNS 对其进行验证。要使用 DNS 验证，请删除该证书，然后创建一个使用 DNS 验证的新证书。

例如，如果为 `example.com` 域请求证书并指定 `www.example.com` 为其他名称，则 ACM 为您创建两条别名记录。每条记录都是专为您的域和账户创建的，包含名称和值。该值是一个别名，指向 ACM 用来自动续订您的证书的 AWS 域。别名记录只需添加到 DNS 数据库中一次。只要证书正在使用中，并且别名记录保持存在，ACM 就会自动续订证书。

**重要**  
如果您使用 Amazon Route 53 管理您的公有 DNS 记录，请联系您的 DNS 提供商了解如何添加记录。如果您没有编辑域的 DNS 数据库的权限，则必须使用[电子邮件验证](email-validation.md)。

无需重复验证，只要别名记录仍然存在，您就可以为您的完全限定域名 (FQDN) 申请额外的 ACM 证书。也就是说，您可以创建具有相同域名的替换证书，或者是覆盖不同子域的证书。由于 CNAME 验证令牌适用于任何 AWS 区域，因此您可以在多个区域中重新创建相同的证书。您还可以替换已删除的证书。

您可以通过从证书关联的 AWS 服务删除证书或通过删除别名记录来停止自动续订。如果您的 DNS 提供商不是 Route 53，请联系提供商了解如何删除记录。如果 Route 53 是您的提供商，请参阅 *Route 53 开发人员指南*中的[删除资源记录集](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-deleting.html)。有关托管证书续订的更多信息，请参阅[中的托管证书续订 AWS Certificate Manager](managed-renewal.md)。

**注意**  
如果您的 DNS 配置中链接了五个以上的别名 CNAMEs 记录，CNAME 解析就会失败。如果您需要更长的链接，我们建议使用[电子邮件验证](email-validation.md)。

## ACM 别名记录的工作原理
<a name="cnames-overview"></a>

**注意**  
本部分适用于不使用 Route 53 作为其 DNS 提供商的客户。

如果您不使用 Route 53 作为 DNS 提供商，则需要（通常通过网站）手动将 ACM 提供的别名记录输入到提供商的数据库中。别名记录用于多种目的，包括作为重新导向机制和供应商特定元数据的容器。对于 ACM，这些记录允许初始域所有权验证和持续的自动证书续订。

下表显示了六个域名的示例别名记录。每条记录的**记录名称**-**记录值**对用于验证域名所有权。

在表中，请注意，前两个**记录名称**-**记录值**对是相同的。这说明了对于 `*.example.com` 等通配符域，ACM 创建的字符串与为其基域 `example.com` 创建的字符串相同。否则，配对的**记录名称**和**记录值**将会因每个域名而异。


**别名记录示例**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/acm/latest/userguide/dns-validation.html)

下划线 (\$1) 之后的*xN*值是 ACM 生成的长字符串。例如，

```
_3639ac514e785e898d2646601fa951d5.example.com.
```

代表生成的**记录名称**。关联的**记录值**可能是

```
_98d2646601fa951d53639ac514e785e8.acm-validation.aws.
```

用于同一 DNS 记录。

**注意**  
如果您的 DNS 提供商不支持带有前导下划线的别名记录值，请参阅[排查 DNS 验证问题](troubleshooting-DNS-validation.md)。

当您请求证书并指定 DNS 验证时，ACM 会提供以下格式的别名记录信息：


****  

| 域名 | 记录名称 | 记录类型 | 记录值 | 
| --- | --- | --- | --- | 
| example.com | \$1a79865eb4cd1a6ab990a45779b4e0b96.example.com。 | 别名记录 |  \$1424c7224e9b0146f9a8808af955727d0.acm-validations.aws。  | 

*域名*是与证书关联的 FQDN。*记录名称*唯一标识记录，用作键值对的键。*记录值*用作键值对的值。

必须在 DNS 提供商用于添加 DNS 记录的 Web 界面的相应字段中输入所有这三个值（*域名*、*记录名称*和*记录值*）。提供商对于记录名称（或只是“名称”）字段的处理方式并不相同。在某些情况下，您需要提供上面所示的整个字符串。其他提供商会自动将域名附加到您输入的任何字符串，这意味着（在本示例中）您只应输入

```
_a79865eb4cd1a6ab990a45779b4e0b96
```

到名称字段中。如果您猜错了这一点，并输入包含域名的记录名称（例如 *`.example.com`*），您的最终结果可能如下所示：

```
_a79865eb4cd1a6ab990a45779b4e0b96.example.com.example.com.
```

在这种情况下，验证将失败。因此，您应该尝试提前确定您的提供商期望的输入类型。

## 设置 DNS 验证
<a name="setting-up-dns-validation"></a>

此部分介绍如何将公有证书配置为使用 DNS 验证。<a name="dns-validation-console"></a>

**在控制台中设置 DNS 验证**
**注意**  
此过程假设您已经创建了至少一个证书，并且您正在创建该证书的 AWS 地区工作。如果您尝试打开控制台并看到首次使用屏幕，或者您已成功打开控制台，但没有在列表中看到您的证书，请确认您指定了正确的区域。

1. 打开 ACM 控制台，网址为。[https://console.aws.amazon.com/acm/](https://console.aws.amazon.com/acm/)

1. 在证书列表中，请选择要配置的状态为 **Pending validation**（等待验证）的证书的 **Certificate ID**（证书 ID）。此时将打开证书的详细信息页面。

1. 在 **Domains**（域）部分，完成下列两个过程之一：

   1. （可选）使用 Route 53 进行验证。

      如果满足以下条件，则会显示活动的 **Create records in Route 53**（在 Route 53 中创建记录）按钮：
      + 您使用 Route 53 作为 DNS 提供商。
      + 您有权写入由 Route 53 托管的区域。
      + 您的 FQDN *尚未*经过验证。
**注意**  
如果您在使用 Route 53 但 **Create record in Route 53**（在 Route 53 中创建记录）缺失或已禁用，请参阅 [ACM 控制台不显示“Create record in Route 53”（在 Route 53 中创建记录）按钮](troubleshooting-DNS-validation.md#troubleshooting-route53-1)。

      选择 **Create records in Route 53**（在 Route 53 中创建记录），然后选择 **Create records**（创建记录）。此时会打开 **Certificate status**（证书状态）页面，状态横幅将报告 **Successfully created DNS records**（已成功创建 DNS 记录）。

      您的新证书可能会继续显示 **Pending validation**（等待验证）最多 30 分钟。
**提示**  
您无法以编程方式请求 ACM 在 Route 53 中自动创建您的记录。但是，您可以对 Route 53 进行 AWS CLI 或 API 调用，在 Route 53 的 DNS 数据库中创建记录。有关 Route 53 记录集的更多信息，请参阅[使用资源记录集](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/rrsets-working-with.html)。

   1. （可选）如果您没有使用 Route 53 作为 DNS 提供商，则必须检索 CNAME 信息，并将其添加到您的 DNS 数据库中。在新证书的详细信息页面上，您可以通过两种方式之一来执行此操作：
      + 复制 **Domains**（域）部分中显示的 CNAME 组件。此信息需要手动添加到您的 DNS 数据库。
      + 或者，选择 **Export to CSV**（导出到 CSV）。结果文件中的信息需要手动添加到 DNS 数据库中。
**重要**  
要避免验证问题，请查看 [ACM 别名记录的工作原理](#cnames-overview) 然后将信息添加到 DNS 提供商的数据库。如果遇到问题，请参阅 [排查 DNS 验证问题](troubleshooting-DNS-validation.md)。

如果 ACM 无法在生成别名记录值后的 72 小时内验证域名，ACM 会将证书状态更改为 **Validation timed out（验证超时）**。导致此结果的最可能原因是您未使用 ACM 生成的值成功更新 DNS 配置。要解决此问题，您必须在查看别名记录说明后请求新的证书。

# AWS Certificate Manager 电子邮件验证
<a name="email-validation"></a>

 AWS Certificate Manager (ACM) 必须先确认您拥有或可以控制请求中指定的所有域，然后 Amazon 证书颁发机构 (CA) 才能为网站颁发证书。您可以使用电子邮件或 DNS 执行验证。本主题讨论电子邮件验证。

如果在使用电子邮件验证时遇到问题，请参阅[排查电子邮件验证的问题](troubleshooting-email-validation.md)。

## 电子邮件验证的工作原理
<a name="how-email-validation-works"></a>

对于每个域，ACM 都会将验证电子邮件发送到以下五个常用系统电子邮件地址。如果您希望改为通过该域接收这些电子邮件，则可以将某个超级域指定为验证域。不超过最小网站地址的任何子域都有效，并且会作为 `@` 符号之后的后缀用作电子邮件地址域。例如，假设将 example.com 指定为 subdomain.example.com 的验证域，则可能会收到一封发送至 admin@example.com 的电子邮件。
+ administrator@your\$1domain\$1name
+ hostmaster@your\$1domain\$1name
+ postmaster@your\$1domain\$1name
+ webmaster@your\$1domain\$1name
+ admin@your\$1domain\$1name

要证明您拥有该域的所有权，必须选择这些电子邮件中包含的验证链接。在证书到期前 45 天，ACM 还会向这些地址发送验证电子邮件以续订证书。

对于使用 ACM API 或 CLI 的多域证书请求，进行电子邮件验证会导致每个请求的域都会发送一封电子邮件，即使该请求中包含其他域的子域。域拥有者需要验证每个域的电子邮件消息，然后 ACM 才能颁发证书。

**此过程的例外情况**  
如果您为以 **www** 或星号通配符 (**\$1**) 开头的域名请求 ACM 证书，则 ACM 将删除开头的 **www** 或星号，并将电子邮件发送到管理地址。这些地址的格式是在域名的剩余部分前面添加 admin@、administrator@、hostmaster@、postmaster@ 和 webmaster@。例如，如果您为 www.example.com 请求 ACM 证书，则电子邮件将发送到 admin@example.com 而不是 admin@www.example.com。同样，如果您为 \$1.test.example.com 请求 ACM 证书，则电子邮件将发送到 admin@test.example.com。其余的常见管理地址的组成方式类似。

**重要**  
ACM 不再支持新证书或续订的 WHOIS 电子邮件验证。仍然支持常用系统地址。有关详细信息，请参阅[博客文章](https://aws.amazon.com/blogs/security/aws-certificate-manager-will-discontinue-whois-lookup-for-email-validated-certificates/)。

## 注意事项
<a name="certificate-considerations"></a>

请注意以下有关电子邮件验证的注意事项。
+ 您需要一个在您的域中注册的工作电子邮件地址才能使用电子邮件验证。设置电子邮件地址的过程不在本指南的讨论范围内。
+ 验证仅适用于 ACM 颁发的公开信任证书。ACM 不会验证[导入的证书](import-certificate.md)或由私有 CA 签名的证书的域所有权。ACM 无法验证 Amazon VPC [私有托管区](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-private-hosted-zones)或任何其他私有域中的资源。有关更多信息，请参阅 [排查证书验证问题](certificate-validation.md)。
+ 在创建采用电子邮件验证的证书后，您无法切换到使用 DNS 对其进行验证。要使用 DNS 验证，请删除该证书，然后创建一个使用 DNS 验证的新证书。

## 证书过期和续订
<a name="renewal"></a>

ACM 证书的有效期为 198 天。续订证书需要域所有者执行操作。ACM 会在证书到期前 45 天开始向与该域关联的电子邮件地址发送续订通知。该通知会包含一个链接，域所有者可以单击该链接进行续订。验证所有列出的域后，ACM 会颁发具有相同 ARN 的续订证书。

## （可选）重新发送验证电子邮件
<a name="gs-acm-resend"></a>

每封验证电子邮件都包含一个令牌，您可以使用它批准证书请求。但是，由于批准过程需要的验证电子邮件可能会被垃圾邮件筛选器阻止或在传输中丢失，因此令牌将在 72 小时后自动过期。如果您未收到原始电子邮件或令牌已到期，可以请求重新发送电子邮件。有关如何重新发送验证电子邮件的信息，请参阅[重新发送验证电子邮件](email-renewal-validation.md#request-domain-validation-email-for-renewal) 

有关电子邮件验证的持久性问题，请参阅[对问题进行故障排除 AWS Certificate Manager](troubleshooting.md)中的[排查电子邮件验证的问题](troubleshooting-email-validation.md)部分。

# 自动验证 AWS Certificate Manager 电子邮件
<a name="email-automation"></a>

通过电子邮件验证的 ACM 证书通常需要域拥有者手动操作。处理大量经电子邮件验证证书的企业可能更愿意创建一个可以自动执行所需响应的解析器。为了帮助客户使用电子邮件验证，本节中的信息介绍了用于域验证电子邮件的模板以及完成验证过程所涉及的工作流。

## 验证电子邮件模板
<a name="validation-email-template"></a>

验证电子邮件具有以下两种格式之一，具体取决于是申请新证书还是续订现有证书。突出显示的字符串的内容应替换为特定于正在验证的域的值。

### 验证新证书
<a name="new-template"></a>

电子邮件模板文本：

```
Greetings from Amazon Web Services,

We received a request to issue an SSL/TLS certificate for requested_domain.

Verify that the following domain, AWS account ID, and certificate identifier correspond 
to a request from you or someone in your organization.

Domain: fqdn
AWS account ID: account_id
AWS Region name: region_name
Certificate Identifier: certificate_identifier

To approve this request, go to Amazon Certificate Approvals 
(https://region_name.acm-certificates.amazon.com/approvals?code=validation_code&context=validation_context) 
and follow the instructions on the page.

This email is intended solely for authorized individuals for fqdn. To express any concerns
about this email or if this email has reached you in error, forward it along with a brief 
explanation of your concern to validation-questions@amazon.com.

Sincerely,
Amazon Web Services
```

### 验证证书以进行续订
<a name="renewal-template"></a>

电子邮件模板文本：

```
Greetings from Amazon Web Services,

We received a request to issue an SSL/TLS certificate for requested_domain. 
This email is a request to validate ownership of the domain in order to renew
the existing, currently in use, certificate. Certificates have defined 
validity periods and email validated certificates, like this one, require you 
to re-validate for the certificate to renew.

Verify that the following domain, AWS account ID, and certificate identifier 
correspond to a request from you or someone in your organization.

Domain: fqdn
AWS account ID: account_id
AWS Region name: region_name
Certificate Identifier: certificate_identifier

To approve this request, go to Amazon Certificate Approvals at
https://region_name.acm-certificates.amazon.com/approvals?code=$validation_code&context=$validation_context
and follow the instructions on the page.

This email is intended solely for authorized individuals for fqdn. You can see
more about how AWS Certificate Manager validation works here - 
https://docs.aws.amazon.com/acm/latest/userguide/email-validation.html.
To express any concerns about this email or if this email has reached you in 
error, forward it along with a brief explanation of your concern to 
validation-questions@amazon.com.

Sincerely,
Amazon Web Services

--
Amazon Web Services, Inc. is a subsidiary of Amazon.com, Inc. Amazon.com is a
registered trademark of Amazon.com, Inc.

This message produced and distributed by Amazon Web Services, Inc.,
410 Terry Ave. North, Seattle, WA 98109-5210.

(c)2015-2022, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Our privacy policy is posted at https://aws.amazon.com/privacy
```

收到来自的新验证消息后 AWS，我们建议您将其用作解析器的最 up-to-date权威的模板。使用 2020 年 11 月之前设计的消息解析器的客户应注意，可能已对模板进行如下更改：
+ 电子邮件主题行现在显示为“`Certificate request for domain name`”而不是“`"Certificate approval for domain name`”。
+ 现在，`AWS account ID` 在显示时不带破折号或连字符。 
+ `Certificate Identifier` 现在会显示完整的证书 ARN 而不是简写格式，例如，将显示 `arn:aws:acm:us-east-1:000000000000:certificate/3b4d78e1-0882-4f51-954a-298ee44ff369` 而不是 `3b4d78e1-0882-4f51-954a-298ee44ff369`。
+ 证书批准 URL 现在包含 `acm-certificates.amazon.com` 而不是 `certificates.amazon.com`。
+ 通过单击证书批准 URL 打开的审批表单现在包含批准按钮。批准按钮 div 的名称现在是 `approve-button` 而不是 `approval_button`。
+ 新请求的证书和续订证书的验证消息具有相同的电子邮件格式。

## 验证工作流程
<a name="validation-workflow"></a>

本节提供有关经电子邮件验证的证书的续订工作流程相关信息。
+ ACM 控制台处理多域证书请求时，会将验证电子邮件发送到您在请求公有证书时指定的域名或验证域。域拥有者需要验证每个域的电子邮件，然后 ACM 才能颁发证书。有关更多信息，请参阅[使用电子邮件验证域所有权](https://docs.aws.amazon.com/acm/latest/userguide/email-validation.html)。
+ 对于使用 ACM API 或 CLI 的多域证书请求，进行电子邮件验证会导致每个请求的域都会发送一封电子邮件，即使该请求中包含其他域的子域。域拥有者需要验证每个域的电子邮件消息，然后 ACM 才能颁发证书。

  如果您通过 ACM 控制台重新发送现有证书的电子邮件，则该电子邮件将发送到原始证书请求中指定的验证域，如果未指定验证域，则将发送到所请求的域。要通过其他域接收验证电子邮件，您可以申请新证书，指定要用于验证的验证域。或者，您可以[ResendValidationEmail](https://docs.aws.amazon.com/acm/latest/APIReference/API_ResendValidationEmail.html)使用 API、SDK 或 CLI 使用`ValidationDomain`参数进行调用。但是，`ResendValidationEmail` 请求中指定的验证域仅用于该此调用，不会保存到证书的 Amazon 资源名称（ARN）中以用于将来的验证电子邮件。每次您希望通过原始证书申请中未指定的域名来接收验证电子邮件时，都必须调用 `ResendValidationEmail`。
**注意**  
在 2020 年 11 月之前，客户只需验证顶端域，ACM 将颁发一份同时涵盖任何子域的证书。使用此时间之前设计的消息解析器的客户应注意电子邮件验证工作流程的更改。
+ 使用 ACM API 或 CLI，您可以强制将多域证书请求的所有验证电子邮件发送到顶端域。在 API 中，使用 [RequestCertificate](https://docs.aws.amazon.com/acm/latest/APIReference/API_RequestCertificate.html) 操作的 `DomainValidationOptions` 参数来指定 `ValidationDomain` 的值，它是 [DomainValidationOption](https://docs.aws.amazon.com/acm/latest/APIReference/API_DomainValidationOption.html) 类型的成员。在 CLI 中，使用 [request-certificate](https://docs.aws.amazon.com/cli/latest/reference/acm/request-certificate.html) 命令的 **--domain-validation-options** 参数指定 `ValidationDomain` 的值。

# AWS Certificate Manager HTTP 验证
<a name="http-validation"></a>

超文本传输协议 (HTTP) 是在万维网上进行数据通信的基础协议。当您为使用的证书选择 HTTP 验证时 CloudFront，ACM 会利用此协议来验证您的域所有权。ACM 与配合使用 CloudFront ，为您提供特定 URL 和唯一令牌，您网域上的该 URL 必须允许访问这些令牌。此令牌可证明您对该域具有控制权。通过在 CloudFront 基础架构中设置从您的域名重定向到 ACM 控制的位置，您可以证明自己有能力修改域上的内容，从而验证您的所有权。ACM 之间的这种无缝集成 CloudFront简化了证书颁发流程，尤其是对于 CloudFront 分发而言。

**重要**  
HTTP 验证不支持通配符域证书（例如 \$1.example.com）。对于通配符证书，必须改用 DNS 验证或电子邮件验证。

例如，如果您使用请求`example.com`域的证书`www.example.com`作为附加名称 CloudFront，ACM 会为您提供两组用 URLs 于 HTTP 验证的证书。每组都包含一个 `redirectFrom` URL 和一个 `redirectTo` URL，专为您的域和 AWS 账户创建。`redirectFrom` URL 是您需要配置的域（例如 `http://example.com/.well-known/pki-validation/example.txt`）上的路径。该 `redirectTo` URL 指向 CloudFront 基础设施中存储唯一验证令牌的 ACM 控制位置。您只需设置这些重定向一次即可。当证书颁发机构尝试验证您的域名所有权时，它将请求来自网址的文件，`redirectFrom`网址会 CloudFront 重定向到`redirectTo`网址，从而允许访问验证令牌。只要证书正在使用并且您的重定向仍然有效，ACM 就会自动 CloudFront 续订您的证书。

使用为完全限定域名 (FQDN) 设置 HTTP 验证后 CloudFront，只要仍存在 HTTP 重定向，您就可以为该 FQDN 申请其他 ACM 证书，而无需重复验证过程。这意味着您可以使用相同的域名创建替换证书。只要重定向仍处于活动状态，您也可以替换已删除的证书，而无需再次进行验证过程。

要停止自动续订 HTTP 验证的证书，您有两个选择。您可以将证书从与其关联的 CloudFront 分配中删除，也可以删除为验证而设置的 HTTP 重定向。如果您使用内容分发网络 (CDN) 或 Web 服务器 CloudFront 来管理重定向，请查阅他们的文档以了解如何删除重定向。如果您使用 CloudFront 管理重定向，则可以通过更新分配的配置来删除重定向。有关托管证书续订的更多信息，请参阅[中的托管证书续订 AWS Certificate Manager](managed-renewal.md)。请记住，停止自动续订可能会导致证书过期，造成您的 HTTPS 流量中断。

## ACM 的 HTTP 重定向的工作原理
<a name="http-redirects-overview"></a>

**注意**  
本部分 CloudFront 适用于使用内容交付和 ACM 进行 SSL/TLS 证书管理的客户。

在 ACM 和中使用 HTTP 验证时 CloudFront，您需要设置 HTTP 重定向。这些重定向允许 ACM 验证您的域名所有权，以便进行初始证书颁发和持续的自动续订。重定向机制的工作原理是将您域上的特定 URL 指向存储唯一验证令牌 CloudFront的基础架构中 ACM 控制的位置。

下表显示了域名的重定向配置示例。请注意，HTTP 验证不支持通配符域（例如 \$1.example.com）。每个配置的**重定向自**-**重定向至**配对用于验证域名所有权。


**HTTP 重定向配置示例**  

| 域名 | 重定向自 | 重定向至 | Comment | 
| --- | --- | --- | --- | 
| example.com |  `http://example.com/.well-known/pki-validation/x2.txt`  |  `https://validation.region.acm-validations.aws/y2/.well-known/pki-validation/x2.txt`  |  Unique  | 
| www.example.com |  `http://www.example.com/.well-known/pki-validation/x3.txt`  | `https://validation.region.acm-validations.aws/y3/.well-known/pki-validation/x3.txt`  |  Unique  | 
| host.example.com |  `http://host.example.com/.well-known/pki-validation/x4.txt`  |  `https://validation.region.acm-validations.aws/y4/.well-known/pki-validation/x4.txt`  |  Unique  | 
| subdomain.example.com |  `http://subdomain.example.com/.well-known/pki-validation/x5.txt`  |  `https://validation.region.acm-validations.aws/y5/.well-known/pki-validation/x5.txt`  |  Unique  | 
| host.subdomain.example.com |  `http://host.subdomain.example.com/.well-known/pki-validation/x6.txt`  |  `https://validation.region.acm-validations.aws/y6/.well-known/pki-validation/x6.txt`  |  Unique  | 

文件名中的*xN*值和 ACM 控制的域中的*yN*值是 ACM 生成的唯一标识符。例如，

```
http://example.com/.well-known/pki-validation/3639ac514e785e898d2646601fa951d5.txt
```

代表生成的**重定向自** URL。关联的**重定向至** URL 可能是

```
https://validation.region.acm-validations.aws/98d2646601fa/.well-known/pki-validation/3639ac514e785e898d2646601fa951d5.txt
```

用于同一验证记录。

**注意**  
如果您的 Web 服务器或内容分发网络不支持在指定路径上设置重定向，请参阅[排查 HTTP 验证问题](troubleshooting-HTTP-validation.md)。

当您请求证书并指定 HTTP 验证时，ACM 会提供以下格式的重定向信息：


****  

| 域名 | 重定向自 | 重定向至 | 
| --- | --- | --- | 
| example.com | http://example.com/.well-known/pki-validation/a 79865eb4cd1a6ab990a45779b4e0b96.txt | https://validation。 region.acm-validations.aws/ /.well-known/pki-a424c7224e9b validation/.txt a79865eb4cd1a6ab990a45779b4e0b96 | 

*域名*是与证书关联的 FQDN。*重定向自*是您域上的 URL，ACM 将在其中查找验证文件。*重定向至*是托管实际验证文件的 ACM 控制 URL。

您需要将 Web 服务器或 CloudFront 分发版本配置为将请求从 “重定向自” URL *重定**向到 URL 重定向*。设置此重定向的确切方法取决于您的 Web 服务器软件或 CloudFront 配置。确保重定向设置正确，以允许 ACM 验证您的域所有权并颁发或续订您的证书。

## 设置 HTTP 验证
<a name="setting-up-http-validation"></a>

在颁发用于的公共 SSL/TLS 证书时，ACM 使用 HTTP 验证来验证您的域所有权。 CloudFront此部分介绍如何将公有证书配置为使用 HTTP 验证。<a name="http-validation-console"></a>

**在控制台中设置 HTTP 验证**
**注意**  
此过程假设您已经通过申请了证书， CloudFront 并且您正在创建证书的 AWS 地区工作。HTTP 验证只能通过 “ CloudFront 分发租户” 功能进行。

1. 打开 ACM 控制台，网址为。[https://console.aws.amazon.com/acm/](https://console.aws.amazon.com/acm/)

1. 在证书列表中，请选择要配置的状态为 **Pending validation**（等待验证）的证书的 **Certificate ID**（证书 ID）。此时将打开证书的详细信息页面。

1. 在**域**部分中，您可以看到证书请求中每个域的**重定向自**和**重定向至**值。

1. 对于每个域，设置从**重定向自** URL 到**重定向至** URL 的 HTTP 重定向。你可以通过你的 CloudFront 分发配置来做到这一点。

1. 将您的 CloudFront 分配配置为将请求从 “重**定**向自” URL 重定向到 URL **重定向**。设置此重定向的方法取决于您的 CloudFront 配置。

1. 设置重定向后，ACM 会自动尝试验证您的域所有权。这一过程耗时最多 30 分钟。

如果 ACM 在为您生成重定向值后的 72 小时内无法验证域名，ACM 会将证书状态更改为 **Validation timed out（验证超时）**。导致此结果的最可能原因是您未成功设置 HTTP 重定向。要解决此问题，您必须在查看重定向说明后请求新的证书。

**重要**  
为避免验证问题，请确保**重定向自**位置的内容与**重定向至**位置的内容相匹配。如果遇到问题，请参阅[解决 HTTP 验证问题](troubleshooting-HTTP-validation.md)。

**注意**  
与 DNS 验证不同的是，您无法以编程方式请求 ACM 自动创建您的 HTTP 重定向。您必须通过 CloudFront 分发设置配置这些重定向。

有关 HTTP 验证的工作方式的更多信息，请参阅 [ACM 的 HTTP 重定向的工作原理](#http-redirects-overview)。