DNS-01 驗證如何委派?用 CNAME 縮小憑證自動續期的 DNS 權限

如果網站使用 DNS-01 自動續期憑證,ACME 客戶端通常必須寫入 DNS TXT 記錄。把整個正式網域的 DNS 修改權限交給伺服器並不理想。DNS-01 可以透過 CNAME 將驗證名稱委派到專用區域,讓憑證自動化只持有該區域必要的權限。

先理解委派會改變什麼

以 example.com 為例,CA 會查詢 _acme-challenge.example.com 的 TXT。該名稱若設為 CNAME,DNS 查詢可跟隨到另一個名稱;Let’s Encrypt 官方文件也說明可用 CNAME 或 NS 委派 DNS-01。這是驗證記錄的委派,不會改變網站 A、AAAA 或 MX 記錄。

可控制驗證目標的人仍可能替相應名稱完成網域驗證並取得憑證,因此目標區域與 API token 必須像敏感憑證一樣保護。請先確認 ACME 客戶端及 DNS 外掛支援 CNAME 委派與更新目標區域;CA 會追蹤 CNAME,不代表每個客戶端都會自動找到可寫入的目標。

建立專用目標並設定 CNAME

準備一個你控制、由 DNS 服務商代管的專用區域,例如 validation.example.net;先在測試環境確認客戶端可在該區域建立與刪除 TXT。建立只允許必要區域 DNS 編輯的獨立 API token,安全保存,不要貼進網站或公開日誌。

在 example.com 的權威 DNS,新增下列 CNAME;具體欄位填法以 DNS 服務商介面為準。目標名稱是示範,請換成自己的名稱:

_acme-challenge.example.com. CNAME example-com.validation.example.net.

先確認原驗證名稱是否已有 TXT 或 CNAME,記錄用途並協調所有既有續期工作;同一名稱的 CNAME 一般不能與其他資料並存,不能直接覆蓋正在使用的驗證記錄。example.com 與 *.example.com 可能同時驗證同一名稱,客戶端及 DNS 外掛必須能處理多個 TXT 值,不可互相覆寫。

驗證解析,再測試續期

dig CNAME _acme-challenge.example.com +short
dig TXT _acme-challenge.example.com
dig TXT example-com.validation.example.net

第一個查詢應回傳目標名稱。實際發起驗證時,後兩項應能看到客戶端建立的挑戰 TXT;驗證完成後可能已清除,因此空結果本身不代表設定失敗。以 CA 測試環境及客戶端提供的測試續期模式驗證,檢查操作日誌、到期日與部署後服務提供的憑證。測試成功也不等於正式排程已完成,還要確認排程帳號、權限與部署 hook。

復原與維護

保留原 DNS 記錄、token 權限、客戶端設定和部署程序。若測試失敗,先停止依賴新委派的自動流程,再還原原本驗證方式及 DNS 記錄,查詢確認並等待快取更新;不要把仍需使用的舊 token 提前撤銷。切換穩定後再撤銷多餘權限,定期盤點目標區域與憑證續期結果。

CAA 也可能限制 CA 簽發,即使 TXT 驗證正確仍須檢查。想先確認網站對外提供的憑證,可參考PowerShell 憑證檢查教學。

相連文章

臉書留言

一般留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *