CDS 與 CDNSKEY 是 DNSSEC 的新 DNS 紀錄,目的在於讓 DNS 代管業者能自動管理 DNSSEC 的金鑰更新。
主要根據 RFC8078 的規定讓 DNS 代管業者能自己更新 DNSKEY 的紀錄,DNSSEC 的金鑰主要放置在 DNS 主機上,現在多數人會將域名註冊商與 DNS 代管分開,譬如在 Gandi.net 註冊網域,但是使用 Cloudflare 的 DNS 代管服務,若是你開啟了 DNSSEC,必須將 DNSKEY 從 Cloudflare 複製到 Gandi 上傳。
有什麼問題
- 只要替換 DNSKEY (KSK),代管業者就必須通知你一次,而你要自己更新一次。
- 使用者上傳錯誤的資料 (複製錯誤/複製不完整)
- 使用者沒有更新
- DNS 管理者沒有向上更新 DNSKEY
上述錯誤都會導致 DNSSEC 解析失效。你的網站就會出現,有時候連不到,有時候連的到的問題,會很不穩定。
CDS 與 CDNSKEY
CDS (Child DS) 與 CDNSKEY (Child DNSKEY) 是讓 DNS 代管商能夠直接幫你更新 DNSKEY 的一個方法,或是你自行管理 DNS 主機的時候,就不須手動更新 DNSKEY。當你的區域檔需要變更 DNSSEC 金鑰 (KSK) 的時後,系統會產生新的 DNSKEY 與 DS,並且把 DNSKEY 與 DS 一同放到區域檔紀錄 (Zone) 中,新 DNSKEY 的類型就是 CDNSKEY 而新的 DS 類型就是 CDS。
域名管理局
域名管理局是網域名稱的管理單位 (如 TWNIC、JPNIC、Verisign),不是註冊商 (如 Gandi.net、Hinet、PCHOME),CDS 與 CDNSKEY 需要由域名管理局主動查詢權威伺服器的紀錄來更新,目前知道有支援主動更新的頂級域名只有 .cz,但相信將來會有更多域名管理局支援。
域名管理局會查看權威伺服器 (通常是 DNS 代管) 是否有 CDS 與 CDNSKEY 紀錄,如果有,就會進行金鑰更新 (Key rollover),如果沒有,則不會有任何動作。
DNS 代管
DNS 代管業者會透過 CDS 與 CDNSKEY 紀錄來直接幫使用者更新 DNSKEY,就不需要域名所有權人手動上傳了。DNS 代管業者必須在確認域名管理局同步之後,移除 CDS 與 CDNSKEY 紀錄,這樣能減輕域名管理於的負載,並且也可以讓代管業者的區域檔 (Zone file) 小一點。
DNS 自管
自行管理 DNS 主機的管理者,要確認您的 DNS 軟體有支援 CDS 與 CDNSKEY,系統會自動產生這兩筆紀錄。
範例
Gandi.net/Cloudflare 已經支援 CDS 與 CDNSKEY,以下是查詢 CDS 的範例:
$ dig rsync.tw cds [略] ;; ANSWER SECTION: rsync.tw. 10800 IN CDS 2674 13 1 AA87755A82957573651B3EF273984DD9A39D8B6D rsync.tw. 10800 IN CDS 2674 13 2 595A06F7AA322CF67EC7715052282D578753C602DB14713AFBC39C09 3B5BBFF9 ;; AUTHORITY SECTION: rsync.tw. 3600 IN NS ns2.gandi.net. rsync.tw. 3600 IN NS ns1.gandi.net. rsync.tw. 3600 IN NS ns3.gandi.net.
基本上會跟 DS 紀錄相同才對:
{11:02}:@~]$ dig rsync.tw ds [略] ;; ANSWER SECTION: rsync.tw. 3600 IN DS 2674 13 2 595A06F7AA322CF67EC7715052282D578753C602DB14713AFBC39C09 3B5BBFF9
DNSSEC 利用 CDS/CDNSKEY 自動更新金鑰的功能,必須要域名管理局 + DNS 主機(代管或自管) 同時支援才能自動更新金鑰喔!目前(2019/09/10) 只有 .cz 有支援喔! .tw / .com 這些常見的域名都尚未支援。