Configurar HTTP/3 en Windows Server 2022 con IIS no es precisamente fácil, pero es factible. El objetivo es aumentar la velocidad de carga de las páginas y la seguridad, especialmente para usuarios con conexiones inestables o lentas. Además, es genial ver cómo tu sitio web se conecta a través de QUIC. Dicho esto, habilitarlo implica una combinación de ajustes del registro, comandos de PowerShell y algunas configuraciones en IIS. Hacerlo correctamente puede ser un poco complicado, como asegurarse de que la configuración de TLS sea perfecta y de que las reglas del firewall no bloqueen el tráfico UDP. A veces, en ciertas configuraciones, es necesario reiniciar el sistema uno o dos veces, pero al final, tu sitio web debería funcionar a través de HTTP/3 en los navegadores compatibles.
Cómo habilitar la compatibilidad con HTTP/3 en Windows Server 2022 IIS
Habilite TLS 1.3 en el Registro —Porque, por supuesto, Windows lo hace complicado
HTTP/3 depende de TLS 1.3, así que primero debe asegurarse de que esté habilitado. Editar el registro no es precisamente divertido, pero es necesario. Tenga en cuenta que necesitará permisos de administrador para hacerlo. Estos comandos habilitan TLS 1.3 tanto para el cliente como para el servidor:
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
Una vez que se realizan estas acciones, generalmente es necesario reiniciar, y es mejor verificar que TLS 1.3 esté activo usando herramientas como SSL Labs o comandos de PowerShell.
Aumente la compatibilidad con HTTP/3 en IIS mediante comandos de registro
Esta parte es la divertida. Se agregan claves de registro para indicarle a IIS que admita HTTP/3:
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
Tenga en cuenta que, en las versiones más recientes de Windows, las opciones de configuración de IIS a veces aparecen en la interfaz gráfica de usuario. De lo contrario, la solución es realizar correcciones del registro. Quizás desee verificar esta configuración con herramientas o PowerShell más adelante.
Habilite la suite de cifrado QUIC: la magia de PowerShell para admitir HTTP/3
Esta parte es un poco extraña, pero necesitas habilitar el conjunto de cifrado TLS para la compatibilidad con QUIC. Ejecuta esto en PowerShell con permisos de administrador:
Enable-TlsCipherSuite -Name TLS_CHACHA20_POLY1305_SHA256 -Position 0
Después de ejecutar, verifique si el soporte está habilitado ejecutando:
(Get-TlsCipherSuite).Name | Select-String CHACHA
Si la suite aparece, perfecto. Si no, quizás tengas que reiniciar PowerShell o incluso el servidor, ya que Windows a veces no aplica los cambios al instante.
Agregue el encabezado HTTP/3 a la respuesta de su sitio web
Esto indica a los navegadores que su sitio es compatible con HTTP/3. En IIS, cree un nuevo encabezado en los enlaces de su sitio (o use el sitio predeterminado).Puede hacerlo mediante la interfaz gráfica de usuario o PowerShell. Esta es la forma más flexible de hacerlo con 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=$headerValue}
Una vez configurado esto, IIS responderá con ese encabezado, indicando a los navegadores que utilicen HTTP/3 cuando sea posible.
Asegúrese de que el tráfico UDP para QUIC no esté bloqueado — Cosas del firewall
Esta parte suele pasarse por alto. Dado que HTTP/3 se ejecuta sobre el puerto UDP 443, el Firewall de Windows necesita reglas que permitan ese tráfico. Compruebe si la regla «Servicios World Wide Web (Tráfico entrante de QUIC)» está habilitada:
Get-NetFirewallRule | ?{ $_. DisplayName -eq "World Wide Web Services (QUIC Traffic-In)" } | select name, enabled, status
Si está deshabilitado, habilítelo con:
Enable-NetFirewallRule -DisplayGroup "World Wide Web Services (QUIC Traffic-In)"
O bien, si falta la regla, es posible que tengas que crear una nueva regla UDP entrante para abrir el puerto 443 para UDP.
Reinicia y prueba si funciona.
Una vez configurado todo, reinicia el servidor. Una vez que esté activo, ve a tu sitio web, abre DevTools en Chrome o Edge ( F12), ve a la pestaña Red, actualiza y revisa la columna Protocolo. Si ves «h3», tu sitio web se está ejecutando mediante HTTP/3. A veces, simplemente espera a que la caché o una actualización completa detecten los nuevos encabezados, así que no te desanimes si no se muestran de inmediato.
Sí, es un proceso un poco largo, pero ver cómo se realiza el protocolo de enlace de tu sitio a través de QUIC es bastante satisfactorio. No sé por qué funciona a veces, pero en algunas configuraciones, solo es cuestión de reiniciar y hacer algunos ajustes en el registro. La clave es asegurarse de que TLS 1.3 esté habilitado, las claves de registro necesarias estén configuradas y las reglas del firewall estén configuradas correctamente. Si todo funciona correctamente, los navegadores compatibles con HTTP/3 (como Edge o Chrome) empezarán a usarlo automáticamente.