Abilitare DNS su HTTPS nel server DNS

Questo articolo illustra come abilitare DNS su HTTPS (DoH) nel servizio Server DNS in esecuzione in Windows Server.

Il traffico DNS tradizionale non è crittografato, che espone le query DNS a intercettazioni, intercettazioni e manipolazione da parte di utenti malintenzionati nella rete. Se è necessario proteggere la comunicazione DNS tra client e server DNS, abilitare DoH crittografa il traffico usando HTTPS, impedendo l'osservazione o la manomissione non autorizzate.

Per altre informazioni sul funzionamento di DoH, vedere Crittografia DNS tramite DNS su HTTPS.

Prerequisiti

Prima di iniziare, assicurarsi di disporre di:

  • Windows Server 2025 con l'aggiornamento della sicurezza 2026-06 (KB5094125) o versione successiva installata

  • Accesso a un'autorità di certificazione (CA):

    • Autorità di certificazione Microsoft Enterprise con modelli di certificato pubblicati

    oppure

    • Provider di certificati di terze parti, ad esempio DigiCert, Let's Encrypt o Verisign
  • Regole del firewall configurate per consentire le connessioni in ingresso sulla porta TCP 443 per DoH

  • Accesso amministrativo o equivalente a Windows Server che ospita il servizio Server DNS

I certificati DoH devono soddisfare i requisiti seguenti:

  • Estensione utilizzo chiavi avanzata: deve includere l'identificatore dell'oggetto Server Authentication (1.3.6.1.5.5.7.3.1)

  • Soggetto o Nome Alternativo del Soggetto: un certificato firmato con un Nome Alternativo del Soggetto (SAN), con il nome di dominio completo o l'indirizzo IP corrispondente al modello URI DoH configurato

  • Chiave privata: deve essere presente nell'archivio del computer locale, correttamente associato al certificato e non deve disporre di una protezione con chiave privata avanzata abilitata

  • Catena di attendibilità: deve essere rilasciata da una CA che considera attendibile sia il server DNS che i client DNS

Per configurazioni di certificati più complesse, vedere Certificati e chiavi pubbliche e Uso dei certificati.

Importare il certificato

Se nel server è già presente un certificato, passare a Associa il certificato. In caso contrario, importare il certificato nel server.

  1. Posizionare il file del .pfx certificato (contenente sia il certificato che la chiave privata) nel server che ospita il server DNS.

  2. Aprire PowerShell come amministratore ed eseguire il comando seguente per importare il certificato, assicurandosi di sostituire <pfxpath> con il percorso del .pfx file e <pfxpassword> con la password per il .pfx file:

    Import-PfxCertificate `
        -FilePath "<pfxpath>" `
        -CertStoreLocation "Cert:\LocalMachine\My" `
        -Password (Read-Host -AsSecureString "<pfxpassword>")
    
  3. Quando richiesto, immettere la password per il certificato.

  4. Per verificare che il certificato sia stato importato correttamente, eseguire il comando seguente, sostituendo <subject-name> con l'oggetto del certificato:

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

Associare il certificato

Dopo aver importato il certificato, associarlo alla porta del server in modo che il server DNS possa usarlo per le connessioni HTTPS.

  1. Generare un nuovo GUID e archiviarlo in una variabile eseguendo il comando seguente:

    $guid = New-Guid
    
  2. Recuperare il certificato e archiviarlo in una variabile eseguendo il comando seguente. Sostituire <subject-name> con l'oggetto del certificato:

    $cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -match "<subject-name>" }
    
  3. Associare il certificato alla porta del server eseguendo il comando seguente:

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

Suggerimento

Per fare in modo che il servizio server DNS risponda al traffico DoH su un indirizzo IP specifico anziché su tutti gli indirizzi, sostituire 0.0.0.0 con l'indirizzo IP desiderato. L'indirizzo IP deve essere pari all'host contenuto nel SAN del certificato o risolversi in esso. È anche possibile sostituire 443 con un numero di porta diverso.

Verificare il binding del certificato

Verificare che il certificato sia associato correttamente all'indirizzo IP e alla porta corretti.

  1. Eseguire il comando seguente per visualizzare le associazioni di certificati SSL:

    netsh http show sslcert
    
  2. Verificare che l'output mostri il vostro indirizzo IP e la porta di comunicazione e che l'hash del certificato corrisponda alla vostra impronta digitale.

Configurare le regole del firewall

DoH usa una porta TCP diversa rispetto al DNS non crittografato, quindi è necessario configurare il firewall per consentire il traffico in ingresso sulla porta specificata durante l'associazione del certificato. Per impostazione predefinita, DoH usa la porta TCP 443, a meno che non sia stata specificata una porta diversa nel modello di URI e nei passaggi di associazione del certificato.

Configurare Windows Firewall per consentire le connessioni in ingresso sulla porta DoH configurata attenendosi alla procedura seguente:

  1. Per creare una regola del firewall che consenta il traffico DoH in ingresso, eseguire il comando seguente:

    New-NetFirewallRule -DisplayName "DNS over HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
    
  2. Verificare che la regola del firewall sia stata creata eseguendo il comando seguente:

    Get-NetFirewallRule -DisplayName "DNS over HTTPS"
    

Annotazioni

Se DoH è stato configurato per l'uso di una porta diversa, sostituire 443 con il numero di porta personalizzato. Se si usa un firewall hardware o un gruppo di sicurezza di rete, assicurarsi che consenta anche il traffico TCP in ingresso sulla stessa porta.

Abilitare il DoH

Dopo aver associato il certificato e configurato le regole del firewall, abilitare il DoH nel server DNS.

  1. Abilitare DoH e impostare il modello URI usando il comando Set-DnsServerEncryptionProtocol . Sostituire dns.contoso.com con il nome host (o l'indirizzo IP) contenuto nella rete SAN nel certificato:

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

    Annotazioni

    Assicurarsi che il numero di porta nel modello URI corrisponda al numero di porta usato durante l'associazione del certificato.

  2. Riavviare il servizio DNS per applicare le modifiche:

    Restart-Service -Name DNS
    

Verificare la configurazione di DoH

Verificare che DoH funzioni correttamente verificando la configurazione e il test da un client.

  1. Verificare la configurazione DoH nel server usando il comando Get-DnsServerEncryptionProtocol :

    Get-DnsServerEncryptionProtocol
    
  2. Aprire Visualizzatore eventi nel server e passare a Applicazioni e servizi Log > server DNS.

  3. Verificare l'ID 822 evento, che indica che il servizio DoH è stato avviato correttamente.

Eseguire il test di DoH da un client

Per verificare che DoH funzioni correttamente, testare la risoluzione DNS da un client compatibile con DoH.

  1. Configurare un client DoH per l'uso della crittografia per il server DNS con lo stesso modello di URI configurato. Per i passaggi di configurazione del client, vedere Secure DNS Client over HTTPS (DoH).

  2. Dal client DoH configurato testare la risoluzione DNS usando il comando Resolve-DnsName . Sostituire contoso.com con un dominio che si vuole risolvere:

    Resolve-DnsName -Name contoso.com -Type A
    
  3. La query DNS viene risolta correttamente.

Per verificare ulteriormente l'attività DoH, seguire i passaggi successivi per monitorare DoH nel server DNS.

Passaggi successivi