Вмикаємо підтримку протоколу HTTP/3 на IIS у Windows Server 2022.

У 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 Server:

  • Включити підтримку протоколу TLS 1.3 у Windows Server (є обов'язковим для використання QUIC і HTTP/3);
  • Додати комплект шифрів TLS_CHACHA20_POLY1305_SHA256 (cipher suite) для підключення 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 (для тесту можна використовувати default web site), прив'яжіть до сайту SSL сертифікат (можна використовувати самопідписаний сертифікат, але потрібно, щоб клієнт довіряв цьому сертифікату) і прив'яжіть сайт до порту 443 (в меню Edit Bindings).

Зверніть увагу, що в меню прив'язки сайту IIS з'явилося кілька додаткових опцій (Disable QUIC, Disable TLS 1.3 over TCP, Disable Legacy TLS).

Потім відкрийте розділ HTTP Response Headers у налаштуваннях сайту IIS та додайте наступну опцію до списку відповідей HTTP:

  • Name: alt-svc
  • Value: 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 Firewall:

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


Якщо правило неактивне, увімкніть правило фаєрволу за допомогою PowerShell:

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

Перезавантажте Windows Server. Після перезавантаження перевірте, що сайт IIS відповідає за HTTP/3.

Більшість сучасних браузерів за замовчуванням підтримують протоколи HTTP/3.

  • Відкрийте веб-сторінку вашого сайту IIS в браузері (Edge у випадку), перейдіть в режим розробника (Inspect), потім виберіть вкладку Network;
  • Додайте колонку Protocol та оновіть сторінку (F5);
  • Переконайтеся, що в конці протоколу вказано H3, це означає, що для підключення до сайту використовувався HTTP/3.

Отправить комментарий

Добавлять новые комментарии запрещено.*

Новые Старые