HTTP/3 werkend krijgen op Windows Server 2022 met IIS is niet helemaal een kwestie van plug-and-play, maar het is wel mogelijk. Het doel is om de laadsnelheid en de beveiliging van webpagina’s te verbeteren, met name voor gebruikers met een instabiele of trage internetverbinding. Bovendien is het best gaaf om te zien hoe je website via QUIC communiceert. Het inschakelen ervan vereist echter een combinatie van aanpassingen in het register, PowerShell-opdrachten en enkele instellingen in IIS. Het correct instellen kan wat lastig zijn – denk bijvoorbeeld aan de juiste TLS-instellingen en het controleren of je firewallregels geen UDP-verkeer blokkeren. Soms is een herstart nodig, maar uiteindelijk zou je website via HTTP/3 beschikbaar moeten zijn in ondersteunde browsers.
Hoe HTTP/3-ondersteuning in te schakelen in Windows Server 2022 IIS
Schakel TLS 1.3 in het register in — want Windows maakt het natuurlijk weer lastig.
HTTP/3 is afhankelijk van TLS 1.3, dus zorg ervoor dat dit eerst is ingeschakeld. Het bewerken van het register is niet bepaald leuk, maar wel noodzakelijk. Houd er rekening mee dat u beheerdersrechten nodig hebt om dit te doen. Met deze commando’s kunt u TLS 1.3 inschakelen voor zowel de client als de server:
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
Zodra die instellingen zijn geïnstalleerd, is een herstart meestal nodig. Het is raadzaam om te controleren of TLS 1.3 actief is met behulp van tools zoals SSL Labs of PowerShell-opdrachten.
Schakel HTTP/3-ondersteuning in IIS in via registeropdrachten.
Dit is het leuke gedeelte. Je voegt registersleutels toe om IIS te laten weten dat het HTTP/3 moet ondersteunen:
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
Houd er rekening mee dat in nieuwere Windows-versies de IIS-configuratieopties soms in de grafische gebruikersinterface verschijnen, maar zo niet, dan zijn aanpassingen in het register de enige oplossing. U kunt deze instelling later eventueel controleren met hulpprogramma’s of PowerShell.
Schakel de QUIC-coderingssuite in — PowerShell-magie om HTTP/3 te ondersteunen
Dit gedeelte is een beetje vreemd, maar je moet de TLS-coderingssuite inschakelen voor QUIC-ondersteuning. Voer dit uit in PowerShell met beheerdersrechten:
Enable-TlsCipherSuite -Name TLS_CHACHA20_POLY1305_SHA256 -Position 0
Controleer na het uitvoeren of de ondersteuning is ingeschakeld door het volgende commando uit te voeren:
(Get-TlsCipherSuite).Name | Select-String CHACHA
Als de suite verschijnt, is dat prima. Zo niet, dan moet u mogelijk PowerShell of zelfs de server opnieuw opstarten, aangezien Windows wijzigingen soms niet direct doorvoert.
Voeg de HTTP/3-header toe aan de respons van uw website.
Dit vertelt browsers dat uw site HTTP/3 ondersteunt. Maak in IIS een nieuwe header aan in uw sitebindingen (of gebruik de standaardsite).U kunt dit doen via de grafische gebruikersinterface (GUI) of via PowerShell — hier is de PowerShell-methode, die flexibeler is:
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}
Zodra dat is ingesteld, zal IIS reageren met die header, waarmee browsers worden geïnformeerd dat ze waar mogelijk HTTP/3 moeten gebruiken.
Zorg ervoor dat UDP-verkeer voor QUIC niet wordt geblokkeerd — firewall-instellingen.
Dit onderdeel wordt vaak over het hoofd gezien. Omdat HTTP/3 via UDP-poort 443 loopt, heeft Windows Firewall regels nodig die dit verkeer toestaan. Controleer of de regel “World Wide Web Services (QUIC Traffic-In)” is ingeschakeld:
Get-NetFirewallRule | ?{ $_. DisplayName -eq "World Wide Web Services (QUIC Traffic-In)" } | select name, enabled, status
Als het is uitgeschakeld, schakel het dan in met:
Enable-NetFirewallRule -DisplayGroup "World Wide Web Services (QUIC Traffic-In)"
Of, als de regel ontbreekt, moet u mogelijk een nieuwe inkomende UDP-regel aanmaken om poort 443 voor UDP te openen.
Herstart de computer en test of het werkt.
Zodra alles is ingesteld, herstart je de server. Nadat de server weer online is, ga je naar je website, open je de ontwikkelaarstools in Chrome of Edge ( F12), ga je naar het tabblad Netwerk, vernieuw je de pagina en kijk je naar de kolom Protocol. Als je “h3” ziet, dan wordt je site via HTTP/3 aangeboden. Soms wacht de server even tot de cache of een harde vernieuwing de nieuwe headers oppikt, dus raak niet ontmoedigd als het niet meteen verschijnt.
Ja, het is een beetje een proces, maar het is best bevredigend om te zien dat de verbinding met je website tot stand komt via QUIC. Ik weet niet zeker waarom het soms werkt, maar in sommige gevallen is het een kwestie van een herstart en een paar aanpassingen in het register. Het belangrijkste is ervoor te zorgen dat TLS 1.3 is ingeschakeld, dat de benodigde registersleutels zijn ingesteld en dat de firewallregels correct zijn geconfigureerd. Als alles klopt, zullen browsers die HTTP/3 ondersteunen (zoals Edge of Chrome) het automatisch gaan gebruiken.