Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
DNS по протоколу HTTPS (DoH) для DNS-сервера в Windows Server в настоящее время находится в предварительной версии. Эта информация относится к предварительному продукту, который может быть существенно изменен до выпуска. Корпорация Майкрософт не предоставляет никаких гарантий, выраженных или подразумеваемых, в отношении информации, предоставленной здесь.
В этой статье объясняется, как включить DNS по протоколу HTTPS (DoH) в службе DNS-сервера, работающей на Windows Server.
Традиционный DNS-трафик незашифрован, что подвергает DNS-запросы прослушиванию, перехвату и манипуляции злоумышленниками в вашей сети. Если вам необходимо защитить DNS-связь между клиентами и вашим DNS-сервером, включение DoH шифрует этот трафик с использованием HTTPS, предотвращая несанкционированное наблюдение или изменение.
Дополнительные сведения о том, как работает DoH, см. в статье о шифровании DNS с помощью DNS по протоколу HTTPS.
Предпосылки
Прежде чем начать, убедитесь, что у вас есть следующее:
Windows Server 2025 с установленным обновлением безопасности 2026-02 (KB5075899) или более поздней версией
Доступ к центру сертификации (ЦС):
- Центр сертификации Microsoft Enterprise с опубликованными шаблонами сертификатов
Or
- Сторонний поставщик сертификатов, например DigiCert, Let's Encrypt или Verisign
Правила брандмауэра, настроенные для разрешения входящих подключений через TCP-порт 443 для DoH
Административный или эквивалентный доступ к Windows Server, на котором размещена служба DNS-сервера
Чтобы включить DNS по протоколу HTTPS в службе DNS-сервера, запросите доступ с помощью DoH в Windows DNS Server: общедоступная предварительная версия регистрации. После запроса следуйте инструкциям, которые вы получаете перед продолжением.
Сертификаты DoH должны соответствовать следующим требованиям:
Расширенное использование ключей: необходимо включить объектный идентификатор аутентификации сервера (1.3.6.1.5.5.7.3.1)
Субъект или альтернативное имя субъекта: подписанный сертификат с альтернативным именем субъекта (SAN) с полным доменным именем или IP-адресом, соответствующим настроенному шаблону URI DoH
Закрытый ключ: должен присутствовать в хранилище локального компьютера, правильно связанном с сертификатом, и не должен иметь строгой защиты закрытого ключа.
Цепочка доверия: должна быть выдана ЦС, которому доверяет DNS-сервер и DNS-клиенты.
Дополнительные сложные настройки сертификатов см. в разделе "Сертификаты" и "Открытые ключи" и"Работа с сертификатами".
Импорт сертификата
Если у вас уже есть сертификат на сервере, перейдите к разделу "Привязка сертификата". В противном случае импортируйте сертификат на сервер.
Поместите файл сертификата
.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-сервера ответила на трафик 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
После привязки сертификата и настройки правил брандмауэра включите DoH на DNS-сервере.
Включите DoH и задайте шаблон URI с помощью команды Set-DnsServerEncryptionProtocol . Замените
dns.contoso.comименем узла (или IP-адресом), содержащимся в SAN в сертификате:Set-DnsServerEncryptionProtocol -EnableDoh $true -UriTemplate "https://dns.contoso.com:443/dns-query"Замечание
Убедитесь, что номер порта в шаблоне URI соответствует номеру порта, используемому при привязке сертификата.
Перезапустите службу DNS, чтобы применить изменения:
Restart-Service -Name DNS
Проверка конфигурации DoH
Убедитесь в правильности работы DoH, проверяя конфигурацию и тестируя с клиента.
Проверьте конфигурацию DoH на сервере с помощью команды Get-DnsServerEncryptionProtocol :
Get-DnsServerEncryptionProtocolОткройте средство просмотра событий на сервере и перейдите в журналы > DNS-сервера приложений и служб.
Проверьте идентификатор
822события, указывающий, что служба DoH успешно запущена.
Тестирование DoH с клиента
Чтобы убедиться, что DoH работает правильно, проверьте разрешение DNS от клиента, поддерживающего DoH.
Настройте клиент DoH для использования шифрования DNS-сервера с тем же шаблоном URI, который вы настроили. Инструкции по настройке клиента см. в разделе "Безопасный DNS-клиент по протоколу HTTPS(DoH)".
На настроенном клиенте DoH проверьте разрешение DNS с помощью команды Resolve-DnsName . Замените
contoso.comдоменом, который требуется разрешить:Resolve-DnsName -Name contoso.com -Type ADns-запрос успешно разрешается.
Чтобы дополнительно проверить действие DoH, выполните следующие действия, чтобы отслеживать DoH на DNS-сервере.