View a markdown version of this page

对 ACME 证书自动化进行故障排除 - Amazon Certificate Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

对 ACME 证书自动化进行故障排除

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

控制台 “监控” 选项卡中未显示 ACME 故障

ACM 控制台中 ACME 终端节点详细信息页面上的 “监控” 选项卡显示证书颁发最后一步的事件,即 ACM 创建证书时(请参阅)。监控 ACME 端点如果您的请求在该步骤之前失败,则不会显示在那里。

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

要诊断这些故障,请使用以下选项之一:

  • 检查您的 ACME 客户端日志-您的 ACME 客户端会记录服务器返回的确切错误。有关其日志文件的位置,请查阅客户的文档。

  • 启用 CloudTrail 数据事件-要集中查看您 Amazon 账户中的所有 ACME 活动以进行调试或审计,请为 ACM ACME 端点启用 CloudTrail 数据事件日志记录。有关这些事件的更多信息,请参阅数据事件

域名验证无效

只有在域名验证达到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 使用与客户的外部账户绑定 (EAB) 关联的 IAM 角色来授权发放和撤销。如果这些操作因访问被拒绝错误而失败,请检查以下内容:

  • 该角色的信任策略允许 ACME 服务主体 (acm-acme.amazonaws.com) 执行sts:AssumeRolests:TagSession、和。sts:SetSourceIdentity如果您添加了sts:SourceIdentitysts:RoleSessionName条件,请确认它允许 ACM 使用的值。

  • 角色授acm:RequestCertificate予发放或acm:RevokeCertificate撤销。

  • 没有 Amazon Organizations 服务控制策略 (SCP) 拒绝该操作。SCP 在签发时强制执行。

有关更多信息,请参阅 用于 ACME 证书自动化的 IAM

证书请求被拒绝

如果 ACME 客户端的证书请求被拒绝,请检查以下内容:

  • 请求的域名由端点上VALID状态的域名验证覆盖,验证的范围(确切的域、子域名或通配符)允许使用所请求的名称。有关更多信息,请参阅 域名验证范围

  • 证书的密钥算法是端点允许的密钥算法之一。有关更多信息,请参阅 端点配置

域名验证之前生效后,证书颁发失败并出现 DNS CNAME 错误

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

发生这种情况时,ACME 客户端会看到订单invalid已转换为状态,并且订单的error字段带有 adetailtype其中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,并使用相同的errorTypeerrorMessage。有关更多信息,请参阅 日志记录中 CloudTrail 支持 ACM API 操作

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

账户注册失败

当 ACME 客户端向终端节点注册账户时,请检查以下内容:

  • 客户端在注册期间提供外部账户绑定 (EAB) 凭证(密钥标识符和 HMAC 密钥)。终端节点需要这些证书。

  • 如果端点需要联系信息,则客户端会在注册期间提供联系人电子邮件地址。有关更多信息,请参阅 外部账户绑定

ACME 客户端在等待证书时超时

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

对于 Certbot,请使用以下标志:--issuance-timeout

certbot certonly --issuance-timeout 120 ...

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