

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

# 对 ACME 证书自动化进行故障排除
<a name="troubleshooting-acme"></a>

本节介绍了 ACME 证书自动化的常见问题以及如何解决这些问题。

**Topics**
+ [控制台 “监控” 选项卡中未显示 ACME 故障](#troubleshooting-acme-monitoring)
+ [域名验证无效](#troubleshooting-acme-dv)
+ [证书颁发或吊销失败，访问被拒绝](#troubleshooting-acme-access-denied)
+ [证书请求被拒绝](#troubleshooting-acme-rejected)
+ [域名验证之前生效后，证书颁发失败并出现 DNS CNAME 错误](#troubleshooting-acme-cname-deleted)
+ [账户注册失败](#troubleshooting-acme-account)
+ [ACME 客户端在等待证书时超时](#troubleshooting-acme-timeout)

## 控制台 “监控” 选项卡中未显示 ACME 故障
<a name="troubleshooting-acme-monitoring"></a>

ACM 控制台中 ACME 终端节点详细信息页面上的 “**监控**” 选项卡显示证书颁发最后一步的事件，即 ACM 创建证书时（请参阅）。[监控 ACME 端点](acm-acme-endpoints.md#acm-acme-endpoint-monitoring)如果您的请求在该步骤之前失败，则不会显示在那里。

有些失败发生在流程的早期，例如，无效的凭证、未验证的域或端点不允许的域。您的 ACME 客户端会直接收到这些故障。

要诊断这些故障，请使用以下选项之一：
+ **检查您的 ACME 客户端日志**-您的 ACME 客户端会记录服务器返回的确切错误。有关其日志文件的位置，请查阅客户的文档。
+ **启用 CloudTrail 数据事件**-要集中查看您 Amazon 账户中的所有 ACME 活动以进行调试或审计，请为 ACM ACME 端点启用 CloudTrail 数据事件日志记录。有关这些事件的更多信息，请参阅[数据事件](acm-supported-actions-in-cloudtrail.md#ct-data-events)。

## 域名验证无效
<a name="troubleshooting-acme-dv"></a>

只有在域名验证达到`VALID`状态后，ACME 端点才能为该域颁发证书。如果域名验证保留`VALIDATING`或变成`INVALID`，请检查以下内容：
+ 确认您配置的 CNAME 记录与域验证详细信息中所示完全一致，包括记录名称和值。要查看所需的记录，请使用`DescribeAcmeDomainValidation`或 ACM 控制台。
+ 如果您提供了 Route 53 托管区域用于自动记录管理，请确认托管区域 ID 正确且 ACM 有权访问该托管区域 ID。

`DescribeAcmeDomainValidation`报告指出原因的失败原因：
+ **`ACCESS_DENIED`:** ACM 无法访问托管区域来验证或创建记录。
+ **`DOMAIN_MISMATCH`:** CNAME 记录与预期值不匹配。
+ **`HOSTED_ZONE_NOT_FOUND`:** 找不到指定的托管区域。
+ **`TIMED_OUT`:** 未在允许的时间内检测到记录。验证记录是否已在 DNS 中传播。
+ **`INTERNAL_FAILURE`:** 发生了内部错误。重试，如果问题仍然存在，请联系 Su Amazon pport。

有关更多信息，请参阅 [ACME 域名验证](acm-acme-domain-validation.md)。

## 证书颁发或吊销失败，访问被拒绝
<a name="troubleshooting-acme-access-denied"></a>

ACM 使用与客户的外部账户绑定 (EAB) 关联的 IAM 角色来授权发放和撤销。如果这些操作因访问被拒绝错误而失败，请检查以下内容：
+ 该角色的信任策略允许 ACME 服务主体 (`acm-acme.amazonaws.com`) 执行`sts:AssumeRole``sts:TagSession`、和。`sts:SetSourceIdentity`如果您添加了`sts:SourceIdentity`或`sts:RoleSessionName`条件，请确认它允许 ACM 使用的值。
+ 角色授`acm:RequestCertificate`予发放或`acm:RevokeCertificate`撤销。
+ 没有 Amazon Organizations 服务控制策略 (SCP) 拒绝该操作。SCP 在签发时强制执行。

有关更多信息，请参阅 [用于 ACME 证书自动化的 IAM](security-iam-acme.md)。

## 证书请求被拒绝
<a name="troubleshooting-acme-rejected"></a>

如果 ACME 客户端的证书请求被拒绝，请检查以下内容：
+ 请求的域名由端点上`VALID`状态的域名验证覆盖，验证的范围（确切的域、子域名或通配符）允许使用所请求的名称。有关更多信息，请参阅 [域名验证范围](acm-acme-domain-validation.md#acm-acme-dv-scope)。
+ 证书的密钥算法是端点允许的密钥算法之一。有关更多信息，请参阅 [端点配置](acm-acme-endpoints.md#acm-acme-endpoint-configuration)。

## 域名验证之前生效后，证书颁发失败并出现 DNS CNAME 错误
<a name="troubleshooting-acme-cname-deleted"></a>

ACME 域名验证要求其别名记录在 DNS 中保留直至验证处于使用状态。如果在域名验证达到`VALID`状态后删除别名记录，则该域的证书订单可能会在颁发时失败，即使域名验证资源本身之前已得到确认。

发生这种情况时，ACME 客户端会看到订单`invalid`已转换为状态，并且订单的`error`字段带有 a`detail`，`type`其中`urn:ietf:params:acme:error:dns`命名了无法解析的 CNAME 记录。例如：

```
{
    "status": "invalid",
    "error": {
        "type": "urn:ietf:params:acme:error:dns",
        "detail": "DNS CNAME records not found: [{{_a1b2c3d4e5f67890abcdef1234567890.example.com.}}]"
    },
    "identifiers": [{ "type": "dns", "value": "{{example.com}}" }],
    "authorizations": ["https://acm-acme-enroll.{{region}}.api.aws/{{00000000-0000-0000-0000-000000000000}}/authz/{{a1b2c3d4-5678-90ab-cdef-EXAMPLE11111}}"],
    "finalize": "https://acm-acme-enroll.{{region}}.api.aws/{{00000000-0000-0000-0000-000000000000}}/order/{{a1b2c3d4-5678-90ab-cdef-EXAMPLE22222}}/finalize",
    "expires": "2026-06-18T13:49:02Z"
}
```

ACME 客户会在自己的输出中显示订单的错误。例如，Certbot 退出时出现以下错误：

```
An unexpected error occurred:
DNS CNAME records not found: [{{_a1b2c3d4e5f67890abcdef1234567890.example.com.}}]
```

如果您已将 CloudTrail 跟踪或事件数据存储配置为记录 ACM 数据事件，则故障也会显示在下方的事`IssueCertificate` CloudTrail 件上`serviceEventDetails`，并使用相同的`errorType`和`errorMessage`。有关更多信息，请参阅 [日志记录中 CloudTrail 支持 ACM API 操作](acm-supported-actions-in-cloudtrail.md)。

要解决此问题，请恢复错误中列出的CNAME记录。要查找域验证所需的别名记录，请在 ACM 控制台中使用`DescribeAcmeDomainValidation`或查看域验证。

## 账户注册失败
<a name="troubleshooting-acme-account"></a>

当 ACME 客户端向终端节点注册账户时，请检查以下内容：
+ 客户端在注册期间提供外部账户绑定 (EAB) 凭证（密钥标识符和 HMAC 密钥）。终端节点需要这些证书。
+ 如果端点需要联系信息，则客户端会在注册期间提供联系人电子邮件地址。有关更多信息，请参阅 [外部账户绑定](acm-acme-eab.md)。

## ACME 客户端在等待证书时超时
<a name="troubleshooting-acme-timeout"></a>

通过 ACM ACME 端点颁发证书最多可能需要两分钟。如果您的 ACME 客户端在收到证书之前超时，请将客户端的颁发超时时间延长至至少 120 秒（2 分钟）。

对于 Certbot，请使用以下标志：`--issuance-timeout`

```
certbot certonly --issuance-timeout 120 ...
```

对于其他 ACME 客户端，请查阅客户端的文档，了解等效的超时配置。