DNSSEC:DNS 的數字簽名
High Contrast
Dark Mode
Light Mode
Sepia
Forest
3 min read565 words

DNSSEC:DNS 的數字簽名

DNSSEC(DNS Security Extensions)為 DNS 記錄添加數字簽名,讓接收方可以驗證記錄沒有被篡改。

DNSSEC 解決什麼問題

傳統 DNS:

你查詢 bank.com → DNS 返回 IP
問題:你無法確認這個 IP 是真實的還是被篡改的

DNSSEC:

你查詢 bank.com → DNS 返回 IP + 數字簽名
你的解析器用公鑰驗證簽名 → 確認記錄沒有被篡改

DNSSEC 的工作原理

graph TD ROOT[根域名
有信任錨點] COM[.com TLD
有根域名的簽名] ZONE[bank.com
有 .com 的簽名] RECORD[bank.com 的 A 記錄
有 bank.com 的簽名] ROOT --> COM --> ZONE --> RECORD ROOT -.信任鏈.-> RECORD

信任鏈(Chain of Trust): - 根域名的公鑰是「信任錨」,硬編碼在 DNS 軟件中 - 每一層用上一層的簽名來驗證 - 只要根域名是可信的,整個鏈都是可信的


DNSSEC 的 DNS 記錄

啟用 DNSSEC 後,DNS 區域中會添加新的記錄類型:

記錄 說明
DNSKEY 存放公鑰
RRSIG 記錄的數字簽名
DS 委派簽名(父域名存放子域名的密鑰哈希)
NSEC/NSEC3 證明某個域名不存在(防止否認攻擊)

啟用 DNSSEC

在 Cloudflare 啟用(最簡單)

路徑: DNS → Settings → DNSSEC → Enable DNSSEC

Cloudflare 自動生成所有必要的記錄,你只需要:

  1. 點擊「Enable DNSSEC」
  2. Cloudflare 顯示需要在注冊商添加的 DS 記錄
  3. 在你的注冊商後台添加 DS 記錄
  4. 等待傳播(最多 48 小時)

在注冊商添加 DS 記錄

不同注冊商的操作路徑不同,通常在域名管理 → DNSSEC 設置中。

DS 記錄格式(Cloudflare 會提供具體值):

Key Tag: 12345
Algorithm: 13
Digest Type: 2
Digest: ABCD1234...

驗證 DNSSEC 是否生效

# 用 dig 驗證 DNSSEC 簽名
dig A example.com +dnssec
# 如果返回中有 RRSIG 記錄,說明 DNSSEC 已啟用
# 在線驗證工具
# dnssec-analyzer.verisignlabs.com
# dnsviz.net

DNSSEC 的注意事項

注意點 說明
不加密內容 DNSSEC 只驗證真實性,不加密 DNS 查詢(用 DoH/DoT 加密)
需要注冊商支持 不是所有注冊商都支持 DNSSEC
密鑰輪換 定期需要輪換密鑰(Cloudflare 自動處理)
啟用前測試 錯誤的 DNSSEC 配置可能導致整個域名無法解析

DNS over HTTPS(DoH)和 DNS over TLS(DoT)

這兩個技術加密 DNS 查詢(DNSSEC 只驗證,不加密):

技術 端口 說明
傳統 DNS 53/UDP 明文,可被監聽
DNS over TLS(DoT) 853/TCP 加密,單一用途
DNS over HTTPS(DoH) 443/TCP 加密,與 HTTPS 混合難以區分

啟用方式: - 在瀏覽器設置(Firefox、Chrome 支持 DoH) - 在操作系統層面(Windows 11 支持 DoH) - 使用支持 DoH 的 DNS 解析器(Cloudflare 1.1.1.1、Nextdns.io)


下一節域名劫持防護實戰——實際操作保護你的域名。