譬如說,你的站點已經啓用了 HSTS,甚至已經被固化到了瀏覽器內部。可是一箇中間人仍然劫持了你的鏈接。你走了 HTTPS 協議?沒問題,我也搞到了一個你所訪問域名的 SSL 證書。要知道 SSL 鏈接使用的證書是服務端決定的,可是這個證書未必就是真正的域名全部人申請的。雖然普通人未必能搞到不屬於你的域名的證書,可是證書頒發機構就不同——雖然基於信譽的緣由他們不太可能會這樣作,可是沒有任何外在的保護防止他們頒發並不是由域名全部人申請的證書。瀏覽器
簡而言之,一個有效的證書未必就是域名全部人申請的證書。就比如普通人造不出能過驗鈔機的假鈔,可是再強大的驗鈔機也不能阻止造幣廠監守自盜。這時就須要一個更上層的服務去驗證這個「有效的證書」的合法性,這就是 DNS CAA 的做用。服務器
DNS Certification Authority Authorization(DNS證書頒發機構受權,簡稱 CAA)是一項藉助互聯網的域名系統(DNS),使域持有人能夠指定容許爲其域簽發證書的數字證書認證機構(CA)的技術。它會在 DNS 下發 IP 的同時,同時下發一條資源記錄,標記該域名下使用的證書必須由某證書頒發機構頒發。好比我大 EOI 的官網使用了 Let's Encrypt 頒發的免費證書,我能夠同時使用 CAA 技術標記 EOI 官網域名 www.eoitek.com 使用的 SSL 證書由 Let's Encrypt 頒發,這樣就能夠(在必定程度上)解決上面所述的問題。工具
CAA 是 DNS 服務器下發的記錄,因此首先要 DNS 服務器支持才行。EOI官網域名購買自阿里雲旗下的萬網,然而萬網自帶的 DNS 服務並不支持 CAA 資源記錄。若是想體驗 CAA,還得使用國外的 DNS 服務器。支持 CAA 記錄的國外 DNS 服務這裏有比較詳細的記錄:https://sslmate.com/caa/support網站
筆者使用的是 Hurricane Electric Free DNS 這款號稱永久免費的 DNS 服務。註冊帳號並郵箱驗證後,添加一個新的域名,注意要填寫一級域名。阿里雲
首先添加 DNS 解析(A)記錄,指向你服務器的外網 IPspa
而後添加 CAA 記錄。.net
0 issue "證書頒發機構域名"
。 CAA data
部分直接填寫 0 issue "letsencrypt.org"
便可。0 iodef "mailto:你的郵箱"
的 CAA 記錄,表示若是發現違背 CAA 記錄的狀況給這個郵箱發郵件通知。若是你仍然不太清楚如何填寫 CAA 記錄,能夠用工具直接生成:https://sslmate.com/caa/。填寫域名後點 Auto-Generate Policy
,這個工具會自動查詢你的網站使用了什麼證書,從而生成對應的 CAA 記錄數據。3d
填寫完成後結果相似以下圖(圖中還添加了幾條指向 EOI 公司內網的域名):code
最後只須要把你域名的 DNS 服務器指向到 nsX.he.net
就行了blog
更改 DNS 服務器指向可能須要約兩天時間生效。是否生效能夠在 Hurricane Electric Free DNS
中你的域名的記錄列表頁查看。
使用 SSL Server Test
能夠很方便的檢驗你的域名是否啓用了 DNS CAA
下面還有對應證書是否匹配當前 DNS CAA 記錄的提示