[DNSSEC] 自動更新金鑰 – CDS 與 CDNSKEY 紀錄

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 這些常見的域名都尚未支援。



發佈留言

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