Inspired by Let's Encrypt Community , thx to sahsanu, jsha, and orzorc.
開端
Lets Encrypt 是一款免費的網站 SSL 證書簽發機構,Certify 是一款開源的 Windows + IIS 下的 Lets Encrypt 申請/自動更新程序。
花生殼是oray的動態域名解析服務。
筆者在嘗試在啟用了花生殼的域名網站申請 Lets Encrypt 證書時,發現 validation 總是失敗,仿佛證書服務無法訪問我們的域名一樣。
而且這個問題與 域名、網站配置、操作系統 無關。
發展
在 Lets Encryp t社區筆者發現了問題的症結:
Oray 的 DNS 不支持 DNS 0x20。
在向 Lets Encrypt 申請證書時,會對每個提供的域名進行解析,當 Lets Encrypt 發出解析請求時,會隨機將域名中的部分字母大寫。
例如:域名為 envsafe.cn,但發送時改為 eNvsAfE.cN
Lets Encrypt 期待 DNS 的應答中的域名為完全一致的 eNvsAfE.cN,否則將拒絕申請
然而 oray 的 DNS 應答中域名變回了非大寫的 envsafe.cn
在聯系了oray的專員客服后,筆者認為花生殼的技術人員對此不甚了解,等待他們更新服務,不如另辟蹊徑。
結局
既然 oray 的 DNS 不行,那就臨時換一個能行的。經筆者測試,DNSPod(騰訊雲)的 DNS 是可以的。
成功申請證書步驟如下:
- 在域名管理后台的 NS 管理中,選擇自定義DNS,輸入DNSPod的域名解析服務地址,免費版地址為:
- f1g1ns1.dnspod.net
- f1g1ns2.dnspod.net
- 在DNSPod中添加域名,等待DNS生效(經測試,cn域名幾乎即時生效,info需要約12小時,cc需要約18小時)
- 增加域名的A記錄(可以隨便寫),下載安裝 DNSPodClientLite 啟用域名的動態解析。
- 運行Certify獲取證書
- 再次修改域名NS,改回oray,停止DNSPodClientLite。
證書有效期為90天,應在證書到期之前執行上述步驟 renew。