DNS via HTTPS inschakelen in DNS-server

In dit artikel wordt uitgelegd hoe u DNS via HTTPS (DoH) inschakelt in de DNS Server-service die wordt uitgevoerd op Windows Server.

Traditioneel DNS-verkeer wordt niet versleuteld, waardoor DNS-query's worden blootgesteld aan afluisteren, onderscheppen en manipuleren door aanvallers in uw netwerk. Als u DNS-communicatie tussen clients en uw DNS-server wilt beveiligen, versleutelt het inschakelen van DoH dat verkeer via HTTPS, waardoor onbevoegde observatie of manipulatie wordt voorkomen.

Zie DNS-versleuteling via HTTPS voor meer informatie over hoe DoH werkt.

Vereiste voorwaarden

Voordat u begint, moet u ervoor zorgen dat u het volgende hebt:

  • Windows Server 2025 met de beveiligingsupdate 2026-06 (KB5094125) of hoger geïnstalleerd

  • Toegang tot een certificeringsinstantie (CA):

    • Microsoft Enterprise Certificate Authority met gepubliceerde certificaatsjablonen

    Or

    • Externe certificaatprovider, zoals DigiCert, Let's Encrypt of Verisign
  • Firewallregels die zijn geconfigureerd om binnenkomende verbindingen toe te staan op TCP-poort 443 voor DoH

  • Beheerderstoegang of gelijkwaardige toegang tot de Windows Server die als host fungeert voor de DNS Server-service

DoH-certificaten moeten voldoen aan de volgende vereisten:

  • Uitgebreid sleutelgebruik extensie: moet serverauthenticatie (1.3.6.1.5.5.7.3.1) object-identificatie bevatten

  • Onderwerp of Onderwerp Alternatieve Naam: een ondertekend certificaat met een Subject Alternative Name (SAN) die overeenkomt met de volledig gekwalificeerde domeinnaam of het IP-adres dat overeenkomt met uw geconfigureerde DoH URI-sjabloon

  • Persoonlijke sleutel: moet aanwezig zijn in het archief van de lokale computer, correct gekoppeld aan het certificaat en mag geen sterke persoonlijke sleutelbeveiliging hebben ingeschakeld

  • Vertrouwensketen: moet worden uitgegeven door een CA die zowel de DNS-server als de DNS-clients vertrouwt

Zie Certificaten en openbare sleutels enwerken met certificaten voor complexere certificaatinstellingen.

Het certificaat importeren

Als u al een certificaat op de server hebt, gaat u naar Het certificaat binden. Anders importeert u het certificaat naar de server.

  1. Plaats het certificaatbestand .pfx (met zowel het certificaat als de persoonlijke sleutel) op de server die als host fungeert voor de DNS-server.

  2. Open PowerShell als beheerder en voer de volgende opdracht uit om het certificaat te importeren. Zorg ervoor dat u <pfxpath> vervangt door het pad naar uw .pfx bestand en <pfxpassword> met het wachtwoord voor het .pfx bestand.

    Import-PfxCertificate `
        -FilePath "<pfxpath>" `
        -CertStoreLocation "Cert:\LocalMachine\My" `
        -Password (Read-Host -AsSecureString "<pfxpassword>")
    
  3. Voer het wachtwoord voor uw certificaat in wanneer u hierom wordt gevraagd.

  4. Als u wilt controleren of het certificaat is geïmporteerd, voert u de volgende opdracht uit, waarbij u <subject-name> het onderwerp van uw certificaat vervangt:

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

Het certificaat binden

Nadat u het certificaat hebt geïmporteerd, verbindt u het met de serverpoort, zodat de DNS-server het kan gebruiken voor HTTPS-verbindingen.

  1. Genereer een nieuwe GUID en sla deze op in een variabele door de volgende opdracht uit te voeren:

    $guid = New-Guid
    
  2. Haal uw certificaat op en sla het op in een variabele door de volgende opdracht uit te voeren. Vervang <subject-name> door het onderwerp van uw certificaat:

    $cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -match "<subject-name>" }
    
  3. Bind het certificaat aan de serverpoort door de volgende opdracht uit te voeren:

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

Aanbeveling

Als u wilt dat de DNS Server-service reageert op DoH-verkeer op een specifiek IP-adres in plaats van op alle adressen, vervangt u door 0.0.0.0 het gewenste IP-adres. Het IP-adres moet ofwel de host zijn of naar de host binnen het SAN van uw certificaat verwijzen. U kunt 443 ook vervangen door een ander poortnummer.

De certificaatbinding controleren

Controleer of uw certificaat juist is gebonden aan het juiste IP-adres en de juiste poort.

  1. Voer de volgende opdracht uit om de SSL-certificaatbindingen weer te geven:

    netsh http show sslcert
    
  2. Controleer of in de uitvoer uw IP-adres en poort worden weergegeven en of de certificaat-hash overeenkomt met uw vingerafdruk.

Firewallregels configureren

DoH maakt gebruik van een andere TCP-poort dan niet-versleutelde DNS, dus u moet uw firewall configureren om binnenkomend verkeer toe te staan op de poort die u hebt opgegeven bij het binden van het certificaat. DoH maakt standaard gebruik van TCP-poort 443, tenzij u een andere poort hebt opgegeven in de stappen voor URI-sjabloon en certificaatbinding.

Configureer Windows Firewall om binnenkomende verbindingen op de geconfigureerde DoH-poort toe te staan met behulp van de volgende stappen:

  1. Voer de volgende opdracht uit om een firewallregel te maken die inkomend DoH-verkeer toestaat:

    New-NetFirewallRule -DisplayName "DNS over HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
    
  2. Controleer of de firewallregel is gemaakt door de volgende opdracht uit te voeren:

    Get-NetFirewallRule -DisplayName "DNS over HTTPS"
    

Opmerking

Als u DoH hebt geconfigureerd voor het gebruik van een andere poort, vervang 443 met uw aangepaste poortnummer. Als u een hardwarefirewall of netwerkbeveiligingsgroep gebruikt, moet u ervoor zorgen dat binnenkomend TCP-verkeer op dezelfde poort wordt toegestaan.

DoH inschakelen

Nadat u het certificaat hebt gekoppeld en firewallregels hebt geconfigureerd, schakelt u de DoH in op uw DNS-server.

  1. Schakel DoH in en stel de URI-sjabloon in met behulp van de opdracht Set-DnsServerEncryptionProtocol . Vervang dns.contoso.com door de hostnaam (of het IP-adres) in het SAN op uw certificaat:

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

    Opmerking

    Zorg ervoor dat het poortnummer in de URI-sjabloon overeenkomt met het poortnummer dat u hebt gebruikt bij het binden van het certificaat.

  2. Start de DNS-service opnieuw op om de wijzigingen toe te passen:

    Restart-Service -Name DNS
    

DoH-configuratie controleren

Test of DoH correct werkt door de configuratie te controleren en te testen vanaf een client.

  1. Controleer de DoH-configuratie op de server met behulp van de opdracht Get-DnsServerEncryptionProtocol :

    Get-DnsServerEncryptionProtocol
    
  2. Open Evenementen Viewer op de server en navigeer naar Toepassingen- en Service-logboeken > DNS Server.

  3. Controleer op gebeurtenis-id 822, wat aangeeft dat de DoH-service is gestart.

DoH testen vanaf een client

Test de DNS-omzetting van een doH-compatibele client om te controleren of DoH correct werkt.

  1. Configureer een DoH-client voor het gebruik van versleuteling voor uw DNS-server met dezelfde URI-sjabloon die u hebt geconfigureerd. Zie Secure DNS Client via HTTPS (DoH) voor stappen voor clientconfiguratie.

  2. Test de DNS-omzetting vanaf de geconfigureerde DoH-client met behulp van de opdracht Resolve-DnsName . Vervang contoso.com door een domein dat je wilt oplossen:

    Resolve-DnsName -Name contoso.com -Type A
    
  3. De DNS-query is met succes opgelost.

Volg de stappen in het volgende artikel om DoH op uw DNS-server te bewaken en DoH-activiteit verder te verifiëren.

Volgende stappen