這很重要
Windows Server 上 DNS Server 的 DNS over HTTPS(DoH)目前處於預覽階段。 這項資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft針對此處提供的資訊,不提供任何明示或默示擔保。
本文說明如何在 Windows Server 上運行的 DNS Server 服務中啟用 DNS over HTTPS(DoH)。
傳統 DNS 流量是未加密的,這會讓 DNS 查詢暴露在網路上被攻擊者竊聽、攔截和操控的風險。 如果你需要保護客戶端與 DNS 伺服器之間的 DNS 通訊,啟用 DoH 會用 HTTPS 加密該流量,防止未經授權的監控或竄改。
欲了解更多DoH運作方式,請參見 使用 DNS over HTTPS 的 DNS 加密。
先決條件
在開始之前,請確保您擁有:
Windows Server 2025,已安裝 2026-02 安全更新(KB5075899)或更新版本
取得認證機構(CA):
- Microsoft 企業憑證授權中心(Corporate Certificate Authority)提供已發佈的憑證範本
或
- 第三方憑證提供者如 DigiCert、Let's Encrypt 或 Verisign
防火牆規則已設定允許透過 TCP 埠 443 的 DoH 入站連線
對託管 DNS Server 服務的 Windows Server 擁有管理權限或等效存取
要在 DNS Server 服務啟用 DNS over HTTPS,請使用 Windows DNS Server 上的 DoH:公開預覽註冊來請求存取。 一旦收到請求,請先依照指示操作,然後再繼續。
衛生部證書必須符合以下要求:
增強型金鑰使用擴充:必須包含伺服器認證(1.3.6.1.5.5.7.3.1)物件識別碼
主體或主體替代名稱:簽署的證書,包含主體替代名稱(SAN),並包含完全符合您設定的DoH URI範本的完整資格網域名稱或IP位址
私鑰:必須存在於本地電腦的儲存庫中,且與憑證正確關聯,且不得啟用強私鑰保護
信任鏈:必須由 DNS 伺服器與 DNS 用戶端共同信任的 CA 發布
關於更複雜的憑證設定,請參見 「憑證與公鑰 」以及 「憑證操作」。
匯入憑證
如果你伺服器上已經有憑證,請前往 綁定憑證。 否則,就把你的憑證匯入到伺服器上。
將憑證的
.pfx檔案(包含憑證與私鑰)放置在主機 DNS 伺服器上。以管理員身份開啟 PowerShell,執行以下指令匯入憑證,並確保替換
<pfxpath>成你的.pfx檔案路徑和<pfxpassword>檔案.pfx密碼:Import-PfxCertificate ` -FilePath "<pfxpath>" ` -CertStoreLocation "Cert:\LocalMachine\My" ` -Password (Read-Host -AsSecureString "<pfxpassword>")當被要求時,輸入你的憑證密碼。
要驗證憑證是否成功匯入,請執行以下指令,並以你的憑證主旨替換
<subject-name>:Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -match "<subject-name>" }
綁定憑證
匯入憑證後,將其綁定到伺服器埠,讓 DNS 伺服器能用它來進行 HTTPS 連線。
請執行以下指令產生新的 GUID,並將其儲存在變數中:
$guid = New-Guid請執行以下指令,取得你的憑證並存入變數。 請將證書主題替換
<subject-name>為:$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -match "<subject-name>" }請執行以下指令將憑證綁定至伺服器埠:
netsh http add sslcert ipport=0.0.0.0:443 certhash=$($cert.Thumbprint) appid="{$guid}"
小提示
若要讓 DNS Server 服務回應特定 IP 位址的 DoH 流量,而非所有位址,請將 IP 位址替換 0.0.0.0 成你想要的 IP。 IP 位址必須是或解析到你的憑證中所包含的 SAN 主機。 你也可以用不同的埠號替換 443 。
確認證書的綁定性
確認你的憑證是否正確綁定到正確的 IP 位址和埠口。
執行以下指令以顯示 SSL 憑證綁定:
netsh http show sslcert確認輸出顯示你的 IP 位址和埠口,且憑證雜湊值是否符合你的指紋。
設定防火牆規則
DoH 使用的 TCP 埠和未加密的 DNS 不同,所以你需要設定防火牆,允許你綁定憑證時指定的埠口有入站流量。 預設情況下,DoH 使用 TCP 埠 443,除非你在 URI 範本和憑證綁定步驟中指定了不同的埠口。
透過以下步驟設定 Windows 防火牆,允許已設定的 DoH 埠接入連線:
要建立允許入站DoH流量的防火牆規則,請執行以下指令:
New-NetFirewallRule -DisplayName "DNS over HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow請執行以下指令驗證防火牆規則是否已建立:
Get-NetFirewallRule -DisplayName "DNS over HTTPS"
備註
如果你設定了 DoH 使用不同的埠口,請替換 443 成你自訂的埠號。 如果你使用硬體防火牆或網路安全群組,請確保同一埠口也允許 TCP 的入站流量。
啟用 DoH
綁定憑證並設定防火牆規則後,請在你的 DNS 伺服器啟用 DoH。
啟用 DoH 並使用 Set-DNSServerEncryptionProtocol 指令設定 URI 範本。 請將憑證上 SAN 所包含的主機名稱(或 IP 位址)替換
dns.contoso.com:Set-DnsServerEncryptionProtocol -EnableDoh $true -UriTemplate "https://dns.contoso.com:443/dns-query"備註
確保 URI 範本中的埠號與你綁定憑證時使用的埠號相符。
重新啟動 DNS 服務以套用以下變更:
Restart-Service -Name DNS
驗證 DoH 配置
透過驗證設定並測試客戶端的 DoH 是否正常運作。
請使用 Get-DnsServerEncryptionProtocol 指令驗證伺服器上的 DoH 設定:
Get-DnsServerEncryptionProtocol在伺服器上開啟 事件檢視 器,並導向 應用程式與服務日誌 > DNS 伺服器。
檢查事件編號
822,表示衛生部服務已順利開始。
由客戶進行的 DoH 測試
為了確認 DoH 是否正常運作,請測試支援 DoH 的客戶端進行 DNS 解析。
設定一個 DoH 用戶端,使用你設定的 URI 範本,讓 DNS 伺服器使用加密。 關於用戶端設定步驟,請參見 Secure DNS Client over HTTPS (DoH)。
在設定好的 DoH 用戶端,使用 Resolve-DnsName 指令測試 DNS 解析。 用你想解決的網域替換
contoso.com:Resolve-DnsName -Name contoso.com -Type ADNS 查詢成功解決。
若要進一步驗證 DoH 活動,請參考以下步驟文章,監控 DNS 伺服器上的 DoH。