Povolení DNS přes HTTPS na serveru DNS

Tento článek vysvětluje, jak povolit DNS přes HTTPS (DoH) ve službě SERVERU DNS spuštěné na Windows Serveru.

Tradiční provoz DNS je nešifrovaný, což zpřístupňuje dotazy DNS pro odposlouchávání, zachycení a manipulaci útočníky ve vaší síti. Pokud potřebujete chránit komunikaci DNS mezi klienty a serverem DNS, povolte doH šifrování provozu pomocí protokolu HTTPS, což brání neoprávněnému pozorování nebo manipulaci.

Další informace o tom, jak DoH funguje, najdete v tématu Šifrování DNS pomocí DNS přes HTTPS.

Požadavky

Než začnete, ujistěte se, že máte:

  • Windows Server 2025 s nainstalovanou aktualizací zabezpečení 2026–06 (KB5094125) nebo novější

  • Přístup k certifikační autoritě (CA):

    • Certifikační autorita společnosti Microsoft s publikovanými šablonami certifikátů

    Nebo

    • Poskytovatel certifikátů třetích stran, jako je DigiCert, Let's Encrypt nebo Verisign
  • Pravidla brány firewall nakonfigurovaná pro povolení příchozích připojení na portu TCP 443 pro DoH.

  • Přístup pro správu nebo ekvivalentní přístup k Windows Serveru, který je hostitelem služby DNS Server

Certifikáty DoH musí splňovat následující požadavky:

  • Rozšíření pro rozšířené použití klíče: Musí obsahovat identifikátor objektu serverového ověřování (1.3.6.1.5.5.7.3.1).

  • Název subjektu nebo alternativní název subjektu: Podepsaný certifikát s alternativním názvem subjektu (SAN) s plně kvalifikovaným názvem domény nebo IP adresou, která odpovídá nakonfigurované šabloně URI DoH.

  • Privátní klíč: Musí být v úložišti místního počítače správně přidružený k certifikátu a nesmí mít povolenou silnou ochranu privátního klíče.

  • Řetězec důvěry: Musí být vystavená certifikační autoritou, kterou důvěřují jak server DNS, tak klienti DNS.

Složitější nastavení certifikátů najdete v tématu Certifikáty a veřejné klíče a práce s certifikáty.

Import certifikátu

Pokud už máte certifikát na serveru, přejděte na Propojit certifikát. V opačném případě importujte certifikát na server.

  1. Umístěte soubor certifikátu .pfx (obsahující certifikát i privátní klíč) na server, který je hostitelem serveru DNS.

  2. Otevřete PowerShell jako správce a spuštěním následujícího příkazu naimportujte certifikát a nezapomeňte ho nahradit <pfxpath> cestou k souboru .pfx a <pfxpassword> heslem souboru .pfx :

    Import-PfxCertificate `
        -FilePath "<pfxpath>" `
        -CertStoreLocation "Cert:\LocalMachine\My" `
        -Password (Read-Host -AsSecureString "<pfxpassword>")
    
  3. Po zobrazení výzvy zadejte heslo pro certifikát.

  4. Pokud chcete ověřit, že se certifikát úspěšně naimportoval, spusťte následující příkaz a nahraďte <subject-name> ho předmětem vašeho certifikátu:

    Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -match "<subject-name>" }
    

Propojte certifikát

Po importu certifikátu ho vytvořte vazbu na port serveru, aby ho server DNS mohl použít pro připojení HTTPS.

  1. Spuštěním následujícího příkazu vygenerujte nový identifikátor GUID a uložte ho do proměnné:

    $guid = New-Guid
    
  2. Načtěte certifikát a uložte ho do proměnné spuštěním následujícího příkazu. Nahraďte <subject-name> předmětem vašeho certifikátu:

    $cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -match "<subject-name>" }
    
  3. Vytvořte vazbu certifikátu na port serveru spuštěním následujícího příkazu:

    netsh http add sslcert ipport=0.0.0.0:443 certhash=$($cert.Thumbprint) appid="{$guid}"
    

Návod

Pokud chcete, aby služba SERVERU DNS reagovala na provoz DoH na konkrétní IP adresu místo všech adres, nahraďte 0.0.0.0 požadovanou IP adresou. IP adresa musí buď patřit hostiteli obsaženému v SAN vašeho certifikátu, nebo směřovat na hostitele. Můžete také nahradit 443 jiným číslem portu.

Ověření vazby certifikátu

Ověřte, že je váš certifikát správně svázaný se správnou IP adresou a portem.

  1. Spuštěním následujícího příkazu zobrazte vazby certifikátů SSL:

    netsh http show sslcert
    
  2. Ověřte, že výstup zobrazuje vaši IP adresu a port a že hodnota hash certifikátu odpovídá vašemu kryptografickému otisku.

Konfigurujte pravidla brány firewall

DoH používá jiný port TCP než nešifrovaný DNS, takže je potřeba nakonfigurovat bránu firewall tak, aby umožňovala příchozí provoz na portu, který jste zadali při vazbě certifikátu. Ve výchozím nastavení používá DoH port TCP 443, pokud jste v šabloně identifikátoru URI a postupu vazby certifikátu nezadáli jiný port.

Nakonfigurujte bránu Windows Firewall tak, aby povolovala příchozí připojení na nakonfigurovaném portu DoH pomocí následujícího postupu:

  1. Pokud chcete vytvořit pravidlo brány firewall, které povoluje příchozí provoz DoH, spusťte následující příkaz:

    New-NetFirewallRule -DisplayName "DNS over HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
    
  2. Ověřte, že pravidlo brány firewall bylo vytvořeno, spuštěním následujícího příkazu:

    Get-NetFirewallRule -DisplayName "DNS over HTTPS"
    

Poznámka:

Pokud jste nakonfigurovali DoH tak, aby používal jiný port, nahraďte 443 vlastním číslem portu. Pokud používáte hardware firewall nebo skupinu zabezpečení sítě, ujistěte se, že umožňuje také příchozí TCP provoz na stejném portu.

Povolte DoH

Po vytvoření vazby certifikátu a konfiguraci pravidel brány firewall povolte DoH na svém DNS serveru.

  1. Povolte DoH a nastavte šablonu identifikátoru URI pomocí příkazu Set-DnsServerEncryptionProtocol . Nahraďte dns.contoso.com názvem hostitele (nebo IP adresou) obsaženým v síti SAN na vašem certifikátu:

    Set-DnsServerEncryptionProtocol -EnableDoh $true -UriTemplate "https://dns.contoso.com:443/dns-query"
    

    Poznámka:

    Ujistěte se, že číslo portu v šabloně identifikátoru URI odpovídá číslu portu, které jste použili při vytváření vazby certifikátu.

  2. Restartujte službu DNS, aby se změny projevily:

    Restart-Service -Name DNS
    

Ověření konfigurace DoH

Otestujte, že doH funguje správně, a to ověřením konfigurace a testováním z klienta.

  1. Pomocí příkazu Get-DnsServerEncryptionProtocol na serveru ověřte konfiguraci DoH:

    Get-DnsServerEncryptionProtocol
    
  2. Otevřete Prohlížeč událostí na serveru a přejděte na Server DNS protokolů > aplikací a služeb.

  3. Zkontrolujte ID 822události, což značí, že služba DoH byla úspěšně spuštěna.

Testování DoH z klienta

Pokud chcete ověřit, že doH funguje správně, otestujte překlad DNS z klienta podporujícího DoH.

  1. Nakonfigurujte klienta DoH tak, aby používal šifrování pro server DNS se stejnou šablonou identifikátoru URI, kterou jste nakonfigurovali. Postup konfigurace klienta najdete v tématu Zabezpečení klienta DNS přes PROTOKOL HTTPS (DoH).

  2. Z konfigurovaného klienta DoH otestujte řešení DNS pomocí příkazu Resolve-DnsName. Nahraďte contoso.com doménou, kterou chcete přeložit:

    Resolve-DnsName -Name contoso.com -Type A
    
  3. Dotaz DNS se úspěšně vyřeší.

Pokud chcete dále ověřit aktivitu DoH, postupujte podle dalších kroků k monitorování DoH na serveru DNS.

Další kroky