В Windows Server 2022 появилась встроенная поддержка HTTP/3 Протокол, который ускоряет загрузку страниц сайта IIS и повышает безопасность. Наиболее важной особенностью HTTP/3 является то, что он основан на QUIC (Quick UDP Internet Connections) транспортный протокол, работающий по протоколу UDP. Пользователи с медленным и нестабильным интернет-соединением получают наибольшую выгоду от HTTP/3. Давайте рассмотрим, как включить поддержку HTTP/3 для сайта Internet Information Service (IIS 10.0.20348+), работающего на Windows Server 2022.

Чтобы включить поддержку HTTP/3 в IIS, необходимо настроить некоторые параметры в Windows:

  1. Включить TLS 1.3 на Windows Server (требуется для использования QUIC и HTTP/3);
  2. Добавить TLS_CHACHA20_POLY1305_SHA256 набор шифров для TLS-соединений;
  3. Добавьте код ответа HTTP/3 в заголовок HTTP вашего веб-сайта IIS.

Отредактируйте некоторые параметры реестра, чтобы включить поддержку TLS 1.3 на Windows Server (в этом примере мы включим поддержку TLS 1.3 на клиенте и сервере).

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" /v DisabledByDefault /t REG_DWORD /d 0 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" /v Enabled /t REG_DWORD /d 1 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" /v DisabledByDefault /t REG_DWORD /d 0 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" /v Enabled /t REG_DWORD /d 1 /f

включение tls 1.3 на windows server 2022

Вот статья о том, как включать и отключать версии TLS с помощью GPO.

Включите поддержку HTTP/3 для IIS:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters" /v EnableHttp3 /t REG_DWORD /d 1 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters" /v EnableAltSvc /t REG_DWORD /d 1 /f

Затем включите специальный шифр TLS с помощью команды PowerShell:

Enable-TlsCipherSuite -Name TLS_CHACHA20_POLY1305_SHA256 -Position 0

Убедитесь, что поддержка набора шифров включена:

(Get-TlsCipherSuite).Name | Select-String CHACHA

PowerShell: Включить набор шифров TLS_CHACHA20_POLY1305_SHA256

Затем добавьте HTTP/3 в заголовок ответа вашего сайта. Создайте простой сайт в IIS (для теста можно использовать сайт по умолчанию), привяжите к нему SSL-сертификат (можно использовать самоподписанный сертификат Windows, но клиент должен ему доверять) и привяжите сайт к порту 443 (из меню Редактировать привязку меню).

Обратите внимание, что некоторые дополнительные опции (Disable QUIC, Disable TLS 1.3 over TCP, Disable Legacy TLS) появились в форме привязки веб-сайта в IIS.

включить HTTP/3 в IIS

Затем откройте Заголовки HTTP-ответов Раздел в настройках сайта IIS и добавьте следующий параметр в список ответов HTTP:

  • Имя: alt-svc
  • Значение: h3=":443"; ma=86400; persist=1

Добавить заголовки ответа HTTP/3

Вы можете добавить этот параметр HTTP Header с помощью PowerShell:

Import-Module WebAdministration
$siteName ="Default Web Site"
$headerName="alt-svc"
$headerValue="h3=":443"; ma=86400; persist=1"
Add-WebConfigurationProperty -Filter "system.webServer/httpProtocol/customHeaders" -PSPath IIS:\Sites\$siteName -Name . -AtElement @{name=$headerName}-Value @{name=$headerName;value=$headerValue}

Убедитесь, что трафик QUIC (порт 443/UDP) разрешен в брандмауэре Microsoft Defender:

Get-NetFirewallRule | ?{ $_.DisplayName -eq "World Wide Web Services (QUIC Traffic-In)" }|select name,enabled, status

Правило брандмауэра World Wide Web Services (QUIC Traffic-In)

Если правило неактивно, включите правило брандмауэра Windows Defender с помощью PowerShell:

Get-NetFirewallRule IIS-WebServerRole-QUIC-In-UDP|enable-netfirewallrule

Перезапустите Windows Server. После перезапуска убедитесь, что веб-сайт IIS отвечает по протоколу HTTP/3 (все современные браузеры по умолчанию поддерживают протокол HTTP/3).

  1. Откройте веб-страницу вашего сайта IIS в браузере (я использовал встроенный Microsoft Edge), включите опцию Inspect и перейдите в режим Сеть вкладка;
  2. Добавить Протокол столбец и обновите страницу (F5);
  3. Убедитесь, что H3 указано в столбце «Протокол». Это означает, что для подключения к сайту используется HTTP/3. проверить, поддерживает ли веб-сайт IIS протокол HTTP/3