如何解決發行或續約 ACM 憑證時的 CAA 錯誤?

4 分的閱讀內容
0

我已請求新憑證或嘗試使用 AWS Certificate Manager (ACM) 續約憑證。網域名稱狀態為「失敗」,我收到類似於以下內容的錯誤: 「Request failed.The status of this certificate is "Failed"。One or more domain names have failed validation due to a Certificate Authority Authentication (CAA) error.」 驗證狀態為「成功」,即使憑證請求失敗也是如此。

簡短說明

憑證授權機構授權 (CAA) 記錄是一種 DNS 記錄,可讓您控制哪個憑證授權機構 (CA) 可為您的網域或子網域發行憑證。請求或續約 ACM 憑證時,ACM 會檢查 CAA 記錄,以驗證網域擁有者是否允許 ACM 為網域發行 SSL 憑證。執行的 CAA 檢查具有以下條件:

  • CAA 記錄檢查會在 DNS 名稱樹狀結構中向上移動
  • 沒有 CAA 記錄表示任何 CA 都可以發行憑證
  • CAA 記錄檢查會遵循 CNAME 記錄
  • "issue" 標籤可用於非萬用字元網域和萬用字元網域,而 "issuewild" 標籤僅影響萬用字元網域

解決方案

CAA 記錄檢查會在 DNS 名稱樹狀結構中向上移動

CAA 記錄檢查從請求網域開始,然後在 DNS 名稱樹狀結構中向上移動。如果您請求 www.example.com 的憑證,則 ACM 會先檢查第三層網域 www.example.com 的 CAA 記錄,然後再檢查第二層網域名稱 example.com。

找到 CAA 記錄後,CAA 查詢即會停止且記錄會生效。以下範例顯示當您請求 www.example.com 的憑證時,哪筆 CAA 記錄會生效:

(Example 1 / www.example.com)
Domain   Record type  Flags  Tag      Value   
www.example.com.   CAA           0      issue   "amazon.com"
example.com.   CAA           0      issue   "SomeCA.com"

(Result: CAA passed)

第三層網域名稱的記錄會生效,因此 ACM 可以發行憑證。不使用第二層網域名稱記錄。

(Example 2 / www.example.com)
Domain   Record type  Flags  Tag      Value   
www.example.com.   CAA           0      issue   "SomeCA.com"
example.com.   CAA           0      issue   "amazon.com"

(Result: CAA failed)

第一筆記錄會生效,這會阻止 ACM 發行憑證。系統會忽略第二筆記錄。

(Example 3 / www.example.com)
Domain   Record type  Flags  Tag      Value   
test.example.com.   CAA           0      issue   "SomeCA.com"
example.com.   CAA           0      issue   "amazon.com"

(Result: CAA passed)

第一筆記錄不會影響 www.example.com 的 CAA 記錄。第二筆記錄會生效,因此 ACM 可以發行憑證。

以下範例顯示當您請求 example.com 的憑證時,哪筆 CAA 記錄會生效:

(Example 4 / example.com)
Domain   Record type  Flags  Tag      Value   
www.example.com.   CAA           0      issue   "amazon.com"
example.com.   CAA           0      issue   "SomeCA.com"

(Result: CAA failed)

不考慮第一筆記錄,因為 www.example.com 是所請求網域的子網域,且 CAA 記錄檢查不會在 DNS 樹中向下移動。第二筆記錄會生效,這會阻止 ACM 發行憑證。

(Example 5 / example.com)
Domain   Record type  Flags  Tag      Value   
www.example.com.   CAA           0      issue   "SomeCA.com"
example.com.   CAA           0      issue   "amazon.com"

(Result: CAA passed)

系統會忽略第一筆記錄,因為 www.example.com 是所請求網域的子網域,且 CAA 記錄檢查不會在 DNS 名稱樹狀結構中向下移動。第二筆記錄會生效,因此 ACM 可以發行憑證。

沒有 CAA 記錄表示任何 CA 都可以發行憑證

如果您沒有為所請求網域設定 CAA 記錄,則包括 ACM 在內的任何 CA 都可以為您的網域發行憑證。例如,ACM 可以為以下範例中的 example.com 發行憑證:

(Example 6 / example.com)
Domain   Record type  Flags  Tag      Value   
www.example.com.   CAA           0      issue   ";"

(Result: CAA passed)

由於 CAA 檢查不會在 DNS 樹中向下移動,因此系統會忽略該記錄。

CAA 記錄檢查會遵循 CNAME 記錄

CAA 記錄檢查會繼續檢查指向不同網域的 CNAME 記錄。在此範例中,www.example.com 指向具有 CAA 記錄的 www.example.net:

(Example 7 / www.example.com)
Domain   Record type  Flags  Tag      Value   
www.example.com.   CNAME www.example.net
www.example.net.   CAA           0      issue   ";"

(Result: CAA failed)

第一筆記錄會將 CAA 檢查轉移到 www.example.net。該 CAA 記錄會阻止任何 CA 發行憑證,且 ACM 無法為 www.example.com 發行憑證。

如果所指向的網域 (www.example.net) 沒有 CAA 記錄,則 CAA 記錄檢查將向上移動到基礎網域 (example.com)。

(Example 8 / www.example.com)
Domain   Record type  Flags  Tag      Value   
www.example.com.   CNAME www.example.net
example.com.   CAA           0      issue   "amazon.com"

(Result: CAA passed)

在這種情況下,ACM 可以為 www.example.com 發行憑證,因為 www.example.net 未設定任何 CAA 記錄。請注意,CAA 記錄檢查不會向上移動至 CNAME 記錄的父記錄,且不會檢查 example.net 的 CAA 記錄。如需詳細資訊,請參閱發行和管理公開信任憑證的基準需求中的附錄 A。

"issue" 標籤可用於非萬用字元網域和萬用字元網域,而 "issuewild" 標籤僅影響萬用字元網域

"issue" 標籤可讓 CA 同時為非萬用字元網域 (www.example.com) 和萬用字元網域 (*.example.com) 發行憑證。您可以使用 "issuewild" 標籤來表示 CA 如何處理萬用字元網域。以下範例顯示當您請求 *.example.com 的憑證時,哪筆 CAA 記錄會生效:

(Example 9 / *.example.com)
Domain   Record type  Flags  Tag      Value   
example.com.   CAA           0      issue   "amazon.com"

(Result: CAA passed)

CAA 記錄可讓 ACM 同時發行非萬用字元網域和萬用字元網域憑證,且 ACM 可發行憑證。

(Example 10 / *.example.com)
Domain   Record type  Flags  Tag      Value   
example.com.   CAA           0      issue   "amazon.com"
example.com.   CAA           0      issuewild   ";"

(Result: CAA failed)

若為萬用字元網域請求,標籤欄位 "issuewild" 會覆蓋 "issue",且 ACM 無法發行憑證。

**注意事項:**您必須為 example.com 設定 CAA 記錄,以允許 CA 為 *.example.com 發行憑證。

(Example 11 / *.example.com)
Domain   Record type  Flags  Tag      Value   
*.example.com.   CAA           0      issuewild   "amazon.com"
example.com.   CAA           0      issuewild   ";"

(Result: CAA failed)

系統會忽略第一筆 CAA 記錄,而第二筆 CAA 記錄會阻止 CA 發行 *.example.com 的憑證。

以下範例顯示當您請求 *.test.example.com 的憑證時,哪筆 CAA 記錄會生效:

(Example 12 / *.test.example.com)
Domain   Record type  Flags  Tag      Value   
test.example.com.   CAA           0      issue   "amazon.com"
example.com.   CAA           0      issuewild   ";"

(Result: CAA passed)

CAA 檢查會尋找第一筆記錄,終止在 DNS 名稱樹狀結構中向上移動,且允許 ACM 發行憑證。

當您請求非萬用字元網域時,系統會忽略 "issuewild" 標籤。該範例顯示當您請求 www.example.com 的憑證時,哪筆 CAA 記錄會生效:

(Example 13 / www.example.com)
Domain   Record type  Flags  Tag      Value   
www.example.com.   CAA           0      issuewild   "amazon.com"
example.com.   CAA           0      issue   ";"

(Result: CAA failed)

這是非萬用字元網域請求,因此系統會忽略第一筆 CAA 記錄。第二筆 CAA 記錄會生效,且不允許 CA 發行憑證。

如需有關建立 CAA 記錄的詳細資訊,請參閱 (選用) 設定 CAA 記錄


相關資訊

DNS 憑證授權機構授權 (CAA) 資源記錄

AWS 官方
AWS 官方已更新 2 年前