本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
疑難排解 ACME 憑證自動化
本節說明 ACME 憑證自動化的常見問題,以及如何解決這些問題。
主題
ACME 失敗未出現在主控台監控索引標籤中
ACM 主控台 ACME 端點詳細資訊頁面上的監控索引標籤會顯示 ACM 建立憑證時憑證發行最後一個步驟的事件 (請參閱 監控 ACME 端點)。如果您的請求在該步驟之前失敗,則不會出現。
某些失敗會在程序稍早發生,例如無效的登入資料、未驗證的網域,或端點不允許的網域。您的 ACME 用戶端會直接收到這些失敗。
若要診斷這些失敗,請使用下列其中一個選項:
-
檢查您的 ACME 用戶端日誌 — ACME 用戶端會記錄伺服器傳回的確切錯誤。如需其日誌檔案的位置,請參閱用戶端的文件。
-
啟用 CloudTrail 資料事件 - 若要集中檢視您 AWS 帳戶中所有 ACME 活動以進行偵錯或稽核,請啟用 ACM ACME 端點的 CloudTrail 資料事件記錄。如需這些事件的詳細資訊,請參閱 資料事件。
網域驗證不會生效
ACME 端點只能在網域的驗證達到 VALID 狀態後,才能發行網域的憑證。如果網域驗證保留在 中VALIDATING或變成 INVALID,請檢查下列項目:
-
確認您已佈建 CNAME 記錄,如網域驗證詳細資訊所示,包括記錄名稱和值。若要檢視所需的記錄,請使用
DescribeAcmeDomainValidation或 ACM 主控台。 -
如果您提供 Route 53 託管區域進行自動記錄管理,請確認託管區域 ID 正確無誤,且 ACM 可以存取該區域。
DescribeAcmeDomainValidation 會報告失敗原因,指出原因:
-
ACCESS_DENIED:ACM 無法存取託管區域來驗證或建立記錄。 -
DOMAIN_MISMATCH:CNAME 記錄不符合預期值。 -
HOSTED_ZONE_NOT_FOUND:找不到指定的託管區域。 -
TIMED_OUT:未在允許時間內偵測到記錄。確認記錄已在 DNS 中傳播。 -
INTERNAL_FAILURE:發生內部錯誤。請再試一次,如果問題仍然存在,請聯絡 AWS Support。
如需詳細資訊,請參閱ACME 網域驗證。
憑證發行或撤銷失敗,拒絕存取
ACM 使用與用戶端外部帳戶繫結 (EAB) 相關聯的 IAM 角色來授權發行和撤銷。如果這些操作因存取遭拒錯誤而失敗,請檢查下列項目:
-
角色的信任政策允許 ACME 服務主體 (
acm-acme.amazonaws.com) 執行sts:AssumeRole、sts:TagSession和sts:SetSourceIdentity。如果您新增sts:SourceIdentity或sts:RoleSessionName條件,請確認它允許 ACM 使用的值。 -
角色授予
acm:RequestCertificate以發行或acm:RevokeCertificate撤銷。 -
無 AWS Organizations 服務控制政策 (SCP) 拒絕操作。SCPs會在發行時強制執行。
如需詳細資訊,請參閱ACME 憑證自動化的 IAM。
憑證請求遭拒
如果 ACME 用戶端的憑證請求遭到拒絕,請檢查下列項目:
在網域驗證之前有效之後,憑證發行失敗並出現 DNS CNAME 錯誤
ACME 網域驗證要求只要驗證正在使用,其 CNAME 記錄就必須保留在 DNS 中。如果在網域驗證達到VALID狀態後移除 CNAME,即使先前已確認網域驗證資源本身,該網域的憑證訂單仍可能會在發行時失敗。
發生這種情況時,ACME 用戶端會看到訂單轉換為invalid狀態,而訂單error的欄位會攜帶 type的 detail,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 動作。
若要解決此問題,請還原錯誤中列出的 CNAME 記錄。若要尋找網域驗證的預期 CNAME,請使用 DescribeAcmeDomainValidation或在 ACM 主控台中檢視網域驗證。
帳戶註冊失敗
當 ACME 用戶端向端點註冊帳戶時,請檢查下列項目:
-
用戶端會在註冊期間提供外部帳戶繫結 (EAB) 登入資料 (金鑰識別符和 HMAC 金鑰)。端點需要這些登入資料。
-
如果端點需要聯絡資訊,用戶端會在註冊期間提供聯絡人電子郵件地址。如需詳細資訊,請參閱外部帳戶繫結。
ACME 用戶端等待憑證逾時
透過 ACM ACME 端點發行憑證最多可能需要兩分鐘。如果您的 ACME 用戶端在收到憑證之前逾時,請將用戶端的發行逾時增加到至少 120 秒 (2 分鐘)。
對於 Certbot,請使用 --issuance-timeout旗標:
certbot certonly --issuance-timeout 120 ...
對於其他 ACME 用戶端,請參閱您用戶端的文件以取得同等的逾時組態。