本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
ACME 域名验证
ACME 域验证资源预授权 ACME 终端节点可以为哪些域颁发证书。与标准 ACM 域验证(作为证书申请的一部分进行设置)不同,ACME 域验证是 PKI 管理员事先配置的永久资源。这种分离使应用程序所有者无需自己执行域验证即可申请证书。
每次域名验证都需要在 DNS 中有一个 CNAME 记录。这与用于标准 ACM DNS 验证的 CNAME 记录类型相同。但是,ACME 域验证特定于各个端点。不同的端点需要单独的 CNAME 记录,即使是同一个域也是如此。
ACME 域名验证与标准 ACM 验证有何关系
两种机制都使用相同的 CNAME 记录格式和用途:通过在 DNS 中放置特定记录来证明域名所有权,如中所AWS Certificate Manager DNS 验证述。在这两种情况下,CNAME 都会将正在进行的域名验证委托给 ACM。由于记录指向 ACM 管理的目标,因此 ACM 可以随着时间的推移重新验证域名所有权,而无需您采取进一步行动。这就是 ACM 自动续订证书的原因。以下列表描述了主要区别:
-
使用标准 ACM 验证,您可以在证书请求中建立 CNAME,例如对的调用。
RequestCertificate -
ACME 域验证是一种永久性 ACM 资源,管理员可以事先配置该资源,与任何单个证书申请无关。
-
ACME 域验证包括一个可配置的范围,允许您控制端点是否可以为确切的域名、其子域名或通配符名称颁发证书。有关更多信息,请参阅 域名验证范围。
域名验证范围
创建域验证时,需要配置一个范围,控制使用此验证可以颁发哪些证书。示波器有三个独立的设置。有关顶点域和子域名的定义,请参阅。域名
ExactDomain(ENABLED/DISABLED)-
允许使用您指定的确切域的证书。例如,如果您指定顶点域
example.com,则此设置允许使用证书。example.com Subdomains(ENABLED/DISABLED)-
允许您指定域的子域名使用证书(例如,
www.example.com或api.example.com)。 Wildcards(ENABLED/DISABLED)-
允许您指定的域名使用通配符证书(例如,
*.example.com)。
您可以组合这些设置。下表显示了作用域组合示例。
| DomainName | ExactDomain | 子域名 | 通配符 | 允许使用证书 |
|---|---|---|---|---|
| example.com | 已启用 | DISABLED | DISABLED | 仅限 example.com |
| example.com | 已禁用 | 已启用 | DISABLED | sub.example.com、api.example.com 等等 |
| example.com | DISABLED | 已禁用 | 已启用 | *.example.com 仅限 |
| example.com | 已启用 | 已启用 | 已启用 | example.com、任何子域名和 *.example.com |
| internal.example.com | 已启用 | 已启用 | DISABLED | internal.example.com 及其子域名 |
状态生命周期
创建域名验证后,ACM 会尝试验证 CNAME 记录最长 72 小时。如果在此时间段内未检测到记录,则域验证将转换为INVALID状态。确保在创建域名验证后立即配置 CNAME 记录。
ACME 域名验证会进入以下状态:
VALIDATING-
CNAME 记录正在验证中。ACM 尝试验证记录的时间长达 72 小时。如果在此时间段内未确认记录,则状态将转换为,
INVALID并显示TIMED_OUT失败原因。 VALID-
CNAME 记录已得到确认。域名验证处于活动状态,可用于发行。
INVALID-
CNAME 记录验证失败。请参阅以下失败原因。
DELETING-
正在删除域名验证。
失败原因
ACCESS_DENIED-
权限不足,无法验证 DNS 记录。
DOMAIN_MISMATCH-
CNAME 记录与预期值不匹配。
HOSTED_ZONE_NOT_FOUND-
找不到指定的托管区域。
INTERNAL_FAILURE-
出现内部错误。再次尝试创建域名验证。
DOMAIN_NOT_ALLOWED-
不允许发行该域名。该域名可能在限制列表中,或者可能不符合发行要求。
CAA_ERROR-
证书颁发机构授权 (CAA) DNS 记录会阻止 ACM 为此域名颁发。确保您的 CAA 记录允许 Amazon 颁发证书。
TIMED_OUT-
在 72 小时内未检测到 CNAME 记录。验证记录是否已在 DNS 中传播,并且与预期的名称和值完全匹配。
创建域名验证
您可以使用 ACM 控制台或 CLI AWS 创建 ACME 域验证。
创建域名验证(控制台)
-
登录 AWS 管理控制台并打开 ACM 控制台。
-
在左侧导航窗格的 ACME 下,选择终端节点。
-
选择要配置的端点。
-
选择 “域” 选项卡。
-
选择添加域。
-
在 “域名” 中,输入域名(例如,
example.com)。 -
为确切的域名、子域名和通配符配置范围设置。
-
(可选)在托管区域 ID 中,输入 Route 53 托管区域 ID 以自动配置别名记录。
-
(可选)在 “标签” 下,向域配置添加一个或多个标签。
-
选择添加域配置。
-
如果您没有使用 Route 53 自动配置,请在您的 DNS 中配置 CNAME 记录。所需的别名记录名称和值显示在域配置详细信息中。
-
等待状态更改为
VALID。
创建域名验证 (AWS CLI)
运行以下命令创建 ACME 域验证:
aws acm create-acme-domain-validation \ --acme-endpoint-arn arn:aws:acm:region:111122223333:acme-endpoint/00000000-0000-0000-0000-000000000000\ --domain-nameexample.com\ --prevalidation-options '{ "DnsPrevalidation": { "DomainScope": { "ExactDomain": "ENABLED", "Subdomains": "ENABLED", "Wildcards": "DISABLED" }, "HostedZoneId": "Z1234567890" } }'
要检查状态并获取 CNAME 详细信息,请运行以下命令:
aws acm describe-acme-domain-validation \ --acme-domain-validation-arn arn:aws:acm:region:111122223333:acme-endpoint/00000000-0000-0000-0000-000000000000/acme-domain-validation/11111111-1111-1111-1111-111111111111
管理域名验证
您可以对 ACME 域验证执行以下管理操作:
- 描述
-
查看状态和 CNAME 记录详情。
- 列表
-
查看终端节点的所有域名验证。
- 更新
-
修改作用域配置。
- 删除
-
移除域名验证。已颁发的证书不受影响。