Aktivera DNS via HTTPS i DNS Server

Den här artikeln beskriver hur du aktiverar DNS via HTTPS (DoH) i DNS Server-tjänsten som körs på Windows Server.

Traditionell DNS-trafik är okrypterad, vilket gör DNS-frågor tillgängliga för avlyssning, avlyssning och manipulering av angripare i nätverket. Om du behöver skydda DNS-kommunikationen mellan klienter och DNS-servern krypterar aktivering av DoH trafiken med HTTPS, vilket förhindrar obehörig observation eller manipulering.

Mer information om hur DoH fungerar finns i DNS-kryptering med DNS via HTTPS.

Förutsättningar

Kontrollera att du har följande innan du börjar:

  • Windows Server 2025 med säkerhetsuppdateringen 2026-06 (KB5094125) eller senare installerad

  • Åtkomst till en certifikatutfärdare (CA):

    • Microsoft Enterprise-certifikatutfärdare med publicerade certifikatmallar

    Or

    • Tredjepartscertifikatprovider som DigiCert, Let's Encrypt eller Verisign
  • Brandväggsregler som konfigurerats för att tillåta inkommande anslutningar på TCP-port 443 för DoH

  • Administrativ eller motsvarande åtkomst till Windows Server som är värd för DNS Server-tjänsten

DoH-certifikat måste uppfylla följande krav:

  • Utökat tillägg för nyckelanvändning: Måste innehålla serverautentiseringsobjektidentifierare (1.3.6.1.5.5.7.3.1)

  • Ämne eller alternativt ämnesnamn: Ett signerat certifikat med ett Subject Alternative Name (SAN) som har det fullständigt kvalificerade domännamnet eller IP-adressen som matchar din konfigurerade DoH-URI-mall

  • Privat nyckel: Måste finnas i den lokala datorns lager, korrekt kopplad till certifikatet, och får inte ha aktiverat starkt skydd för privat nyckel.

  • Förtroendekedja: Måste utfärdas av en ca som både DNS-servern och DNS-klienterna litar på

Mer komplexa certifikatkonfigurationer finns i Certifikat och offentliga nycklar och Arbeta med certifikat.

Importera certifikatet

Om du redan har ett certifikat på servern går du till Bind certifikatet. Annars importerar du certifikatet till servern.

  1. Placera certifikatets .pfx fil (som innehåller både certifikat och privat nyckel) på servern som är värd för DNS-servern.

  2. Öppna PowerShell som administratör och kör följande kommando för att importera certifikatet, se till att ersätta <pfxpath> med sökvägen till .pfx filen och <pfxpassword> med lösenordet för .pfx filen:

    Import-PfxCertificate `
        -FilePath "<pfxpath>" `
        -CertStoreLocation "Cert:\LocalMachine\My" `
        -Password (Read-Host -AsSecureString "<pfxpassword>")
    
  3. När du uppmanas att göra det anger du lösenordet för certifikatet.

  4. Kontrollera att certifikatet har importerats genom att köra följande kommando och ersätta <subject-name> med certifikatets ämne:

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

Binda certifikatet

När du har importerat certifikatet binder du det till serverporten så att DNS-servern kan använda det för HTTPS-anslutningar.

  1. Generera ett nytt GUID och lagra det i en variabel genom att köra följande kommando:

    $guid = New-Guid
    
  2. Hämta certifikatet och lagra det i en variabel genom att köra följande kommando. Ersätt <subject-name> med certifikatets ämne:

    $cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -match "<subject-name>" }
    
  3. Binda certifikatet till serverporten genom att köra följande kommando:

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

Tips/Råd

Om du vill att DNS Server-tjänsten ska svara på DoH-trafik på en specifik IP-adress i stället för alla adresser ersätter 0.0.0.0 du med önskad IP-adress. IP-adressen måste antingen vara eller matcha den värd som finns i SAN för ditt certifikat. Du kan också ersätta 443 med ett annat portnummer.

Verifiera certifikatbindningen

Bekräfta att certifikatet är korrekt bundet till rätt IP-adress och port.

  1. Kör följande kommando för att visa SSL-certifikatbindningarna:

    netsh http show sslcert
    
  2. Kontrollera att utdata visar din IP-adress och port och att certifikatshashen matchar tumavtrycket.

Konfigurera brandväggsregler

DoH använder en annan TCP-port än okrypterad DNS, så du måste konfigurera brandväggen för att tillåta inkommande trafik på den port som du angav när du band certifikatet. Som standard använder DoH TCP-port 443 om du inte har angett en annan port i URI-mallen och certifikatbindningsstegen.

Konfigurera Windows-brandväggen för att tillåta inkommande anslutningar på den konfigurerade DoH-porten med hjälp av följande steg:

  1. Kör följande kommando för att skapa en brandväggsregel som tillåter inkommande DoH-trafik:

    New-NetFirewallRule -DisplayName "DNS over HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
    
  2. Kontrollera att brandväggsregeln skapades genom att köra följande kommando:

    Get-NetFirewallRule -DisplayName "DNS over HTTPS"
    

Anmärkning

Om du har konfigurerat DoH för att använda en annan port ersätter 443 du med ditt anpassade portnummer. Om du använder en maskinvarubrandvägg eller nätverkssäkerhetsgrupp kontrollerar du att den även tillåter inkommande TCP-trafik på samma port.

Aktivera DoH

När du har bundet certifikatet och konfigurerat brandväggsregler aktiverar du DoH på DNS-servern.

  1. Aktivera DoH och ange URI-mallen med kommandot Set-DnsServerEncryptionProtocol . Ersätt dns.contoso.com med värdnamnet (eller IP-adressen) som finns i SAN på certifikatet:

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

    Anmärkning

    Kontrollera att portnumret i URI-mallen matchar det portnummer som du använde när du band certifikatet.

  2. Starta om DNS-tjänsten för att tillämpa ändringarna:

    Restart-Service -Name DNS
    

Verifiera DoH-konfiguration

Testa att DoH fungerar korrekt genom att verifiera konfigurationen och testningen från en klient.

  1. Kontrollera DoH-konfigurationen på servern med kommandot Get-DnsServerEncryptionProtocol :

    Get-DnsServerEncryptionProtocol
    
  2. Öppna Loggboken på servern och gå till DNS-servern för program- och tjänstloggar>.

  3. Sök efter händelse-ID 822, vilket anger att DoH-tjänsten har startats.

Testa DoH från en klient

Kontrollera att DoH fungerar korrekt genom att testa DNS-matchning från en DoH-kompatibel klient.

  1. Konfigurera en DoH-klient för att använda kryptering för DNS-servern med samma URI-mall som du konfigurerade. Information om klientkonfigurationssteg finns i Skydda DNS-klienten via HTTPS (DoH).

  2. Från den konfigurerade DoH-klienten testar du DNS-matchning med kommandot Resolve-DnsName . Ersätt contoso.com med en domän som du vill lösa:

    Resolve-DnsName -Name contoso.com -Type A
    
  3. DNS-frågan löser problemet.

Om du vill verifiera DoH-aktiviteten ytterligare följer du nästa steg för att övervaka DoH på DNS-servern.

Nästa steg