В 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:
- Включить TLS 1.3 на Windows Server (требуется для использования QUIC и HTTP/3);
- Добавить TLS_CHACHA20_POLY1305_SHA256 набор шифров для TLS-соединений;
- Добавьте код ответа 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
Включите поддержку 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
Затем добавьте HTTP/3 в заголовок ответа вашего сайта. Создайте простой сайт в IIS (для теста можно использовать сайт по умолчанию), привяжите к нему SSL-сертификат (можно использовать самоподписанный сертификат Windows, но клиент должен ему доверять) и привяжите сайт к порту 443 (из меню Редактировать привязку меню).
Обратите внимание, что некоторые дополнительные опции (Disable QUIC, Disable TLS 1.3 over TCP, Disable Legacy TLS) появились в форме привязки веб-сайта в IIS.
Затем откройте Заголовки HTTP-ответов Раздел в настройках сайта IIS и добавьте следующий параметр в список ответов HTTP:
- Имя:
alt-svc
- Значение:
h3=":443"; ma=86400; persist=1
Вы можете добавить этот параметр 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
Если правило неактивно, включите правило брандмауэра Windows Defender с помощью PowerShell:
Get-NetFirewallRule IIS-WebServerRole-QUIC-In-UDP|enable-netfirewallrule
Перезапустите Windows Server. После перезапуска убедитесь, что веб-сайт IIS отвечает по протоколу HTTP/3 (все современные браузеры по умолчанию поддерживают протокол HTTP/3).
- Откройте веб-страницу вашего сайта IIS в браузере (я использовал встроенный Microsoft Edge), включите опцию Inspect и перейдите в режим Сеть вкладка;
- Добавить Протокол столбец и обновите страницу (
F5
); - Убедитесь, что H3 указано в столбце «Протокол». Это означает, что для подключения к сайту используется HTTP/3.