ESA在cname模式下獲得泛域名證書方法
Categories:
域名託管在阿里雲 DNS 或第三方, 無法遷移域名 ns, 但需要泛域名. 阿里雲 ESA 提供 10 張證書的額度, 顯然是不太夠的.
這裡分享一種方法獲得泛域名證書, 最後會說明原理.
需要在兩個業務介面進行操作:
- ESA
- 雲解析(或第三方 DNS 解析)
操作步驟
- ESA: DNS -> 設置: 轉換為 NS 接入模式, 直接確認, 不需要其它操作.
- ESA: 申請免費邊緣證書, 僅申請
*.example.com, 使用自己的域名 - ESA: 點開正在申請的證書的下拉條, 獲得 txt 記錄, 主機記錄:
_acme-challenge.example.com, 記錄值-PewtWrH93avbM_bScUILtcNwCHifNvjZIa2VgT9seQ - 雲解析: 創建 TXT 記錄, 將上一步獲得主機記錄和記錄值填入
- 等待獲得泛域名證書, 十分鐘內未獲得, 則表示有出錯, 自行檢查錯誤.
- ESA: DNS -> 設置: 轉換為 CNAME 接入模式, 直接確認, 不需要其它操作.
原理
免費證書都來自letsencrypt, 其有兩種認證方式:
- HTTP-01 Challenge, Let’s Encrypt 的驗證伺服器會通過 HTTP 請求訪問你伺服器上的一個特定文件(位於.well-known/acme-challenge/路徑下),以確認你對域名的控制權。
- DNS-01 Challenge:這種方式要求你在你的域名的 DNS 記錄中添加一條 TXT 記錄。通過在 DNS 中添加特定的 TXT 記錄,你可以證明自己對該域名具有控制權。
泛域名證書只能通過 DNS-01 挑戰獲取, 也就是需要配置 DNS 記錄. 因此 ESA 會要求將域名託管到 ESA 平台才能申請泛域名證書, 操作步驟中"ESA: DNS -> 設置: 轉換為 NS 接入模式" 是通過分析 ESA 的介面ApplyCertificate返回信息得到的結論, 這一步不產生任何實際作用, 僅僅是為了繞過阿里雲的校驗.
核心步驟是向 letscrypt 申請證書時, 將預定好的 TXT 記錄寫入域名的 ns 伺服器, 無論這個伺服器是來自雲解析還是 ESA, 都可以證明域名屬於自己.
總結
ESA 和雲解析同屬阿里雲, 卻不能數據互通, ESA 明明有驗證域名是否屬於本帳號的能力, 獲取泛域名證書只需要在雲解析加一條解析規則, 授權一下就可以, 但是卻沒做. 體驗還有提升空間.
這種方法獲取的證書可能無法更新, 可以使用其它方式定義同步證書到 ESA: https://api.aliyun.com/api/ESA/2024-09-10/SetCertificate