How to enable HTTP/3 in Windows Server 2022

With the release of Windows Server 2022, there is now native support for hosting HTTP/3 services. Jeej! In short, here are the few steps you need to perform to enable HTTP/3 in Windows Server 2022. I can’t provide you with full details and how-to’s, as I don’t know your network.

Enable HTTP/3 in Windows Server 2022 (IIS), in a nutshell:

  1. Add registry values to EnableHttp3 and EnableAltSvc:
    • 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
  2. Verify QUIC traffic (443/UDP) is allowed on your server and in your network:
    • (Get-NetFirewallRule) | ?{ $_.DisplayName -eq "World Wide Web Services (QUIC Traffic-In)" }
  3. If Get-NetFirwallRule provides no results, open up your firewall to allow QUIC traffic for Internet Information Services (IIS) [UDP 443]:
    • New-NetFirewallRule -DisplayName "Allow QUIC" -Direction Inbound -Protocol UDP -LocalPort 443 -Action Allow -LocalOnlyMapping $true
HTTP/3 in a .NET 5 web application

Caveat: These steps worked in my environment with Windows Server 2022 build 10.0.20348. But only on a freshly installed server, not in an in-place upgraded server from pre GA to this GA build. Further, a lot depends on your network: do you allow QUIC traffic? There are some different circumstances and results mentioned in the linked blog post below.

TLS 1.3 cipher suite TLS_CHACHA20_POLY1305_SHA256 doesn’t seem to be required for having HTTP/3 – QUIC support. If necessary, enable TLS 1.3 cipher suite TLS_CHACHA20_POLY1305_SHA256:

Enable-TlsCipherSuite -Name TLS_CHACHA20_POLY1305_SHA256 -Position 0

And verify it’s enabled: (Get-TlsCipherSuite).Name | Select-String CHACHA

You may find more information about enabling HTTP/3 in Windows Server 2022 IIS in Tommy Jensen‘s post Enabling HTTP/3 support on Windows Server 2022.

In your monitoring tool, you can get metrics from the \QUIC Performance Diagnostics\* performance counters, for example for in your Zabbix monitoring and templates.

There is an access violation / crash bug (ExceptionCode: c0000005 (Access violation)) present in MsQuic, see GitHub Issues 2249 and 2188.

Hi! Join the discussion, leave a reply!

Loading time: 105 queries, 0.210 seconds using 13558424 bytes memory. Peak memory usage: 13960392 bytes.