Comment activer la prise en charge HTTP/3 sur IIS pour Windows Server 2022

Configurer HTTP/3 sur Windows Server 2022 avec IIS n’est pas une mince affaire, mais c’est tout à fait possible. L’objectif est d’améliorer la vitesse de chargement des pages et la sécurité, notamment pour les utilisateurs disposant d’une connexion instable ou lente. De plus, c’est plutôt sympa de voir son site web communiquer via QUIC. Cela dit, son activation nécessite quelques modifications du registre, des commandes PowerShell et certains paramètres d’IIS. La configuration peut s’avérer délicate : il faut par exemple s’assurer que les paramètres TLS sont parfaitement configurés et que les règles du pare-feu n’empêchent pas le trafic UDP. Dans certains cas, un ou deux redémarrages sont nécessaires, mais au final, votre site devrait être accessible via HTTP/3 dans les navigateurs compatibles.

Comment activer la prise en charge HTTP/3 dans Windows Server 2022 IIS

Activer TLS 1.3 dans le Registre — Car, bien sûr, Windows complique les choses.

HTTP/3 dépend de TLS 1.3 ; il faut donc s’assurer au préalable que ce protocole est activé. Modifier le registre n’est pas une mince affaire, mais c’est indispensable. Notez que des droits d’administrateur sont nécessaires. Les commandes suivantes activent TLS 1.3 côté client et côté serveur :

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

Une fois ces éléments installés, un redémarrage est généralement nécessaire — et il est préférable de vérifier que TLS 1.3 est actif à l’aide d’outils comme SSL Labs ou des commandes PowerShell.

Augmenter la prise en charge HTTP/3 dans IIS via des commandes de registre

Voici la partie la plus amusante. Il s’agit d’ajouter des clés de registre pour indiquer à IIS de prendre en charge 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

Notez que sur les versions récentes de Windows, les options de configuration d’IIS apparaissent parfois dans l’interface graphique. Si ce n’est pas le cas, il faudra modifier le registre. Vous pouvez vérifier ce paramètre ultérieurement à l’aide d’outils ou de PowerShell.

Activer la suite de chiffrement QUIC — La magie PowerShell pour prendre en charge HTTP/3

Cette étape est un peu particulière, mais vous devez activer la suite de chiffrement TLS pour la prise en charge de QUIC. Exécutez la commande suivante dans PowerShell avec les droits d’administrateur :

Enable-TlsCipherSuite -Name TLS_CHACHA20_POLY1305_SHA256 -Position 0

Après l’exécution, vérifiez si la prise en charge est activée en exécutant :

(Get-TlsCipherSuite).Name | Select-String CHACHA

Si la suite apparaît, c’est parfait. Sinon, il se peut que vous deviez redémarrer PowerShell, voire le serveur, car Windows n’applique pas toujours les modifications instantanément.

Ajoutez l’en-tête HTTP/3 à la réponse de votre site web

C’est ce qui indique aux navigateurs que votre site prend en charge HTTP/3. Dans IIS, créez un nouvel en-tête dans les liaisons de votre site (ou utilisez le site par défaut).Vous pouvez le faire via l’interface graphique ou PowerShell ; voici la méthode PowerShell, qui est plus flexible :

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}

Une fois cette configuration effectuée, IIS répondra avec cet en-tête, indiquant aux navigateurs d’utiliser HTTP/3 lorsque cela est possible.

Vérifiez que le trafic UDP pour QUIC n’est pas bloqué (paramètres de pare-feu).

Cette étape est souvent négligée. Le protocole HTTP/3 utilisant le port UDP 443, le Pare-feu Windows doit autoriser ce trafic. Vérifiez si la règle « Services Web (trafic entrant QUIC) » est activée :

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

Si cette fonction est désactivée, activez-la avec :

Enable-NetFirewallRule -DisplayGroup "World Wide Web Services (QUIC Traffic-In)"

Ou, si la règle est manquante, vous devrez peut-être créer une nouvelle règle UDP entrante pour ouvrir le port 443 pour UDP.

Redémarrez et vérifiez si cela fonctionne.

Une fois la configuration terminée, redémarrez le serveur. Après le redémarrage, accédez à votre site web, ouvrez les outils de développement dans Chrome ou Edge ( F12), rendez-vous dans l’ onglet Réseau, actualisez la page et consultez la colonne Protocole. Si vous voyez « h3 », votre site utilise le protocole HTTP/3. Il arrive parfois que le serveur attende simplement que le cache soit mis à jour ou qu’une actualisation forcée prenne en compte les nouveaux en-têtes ; ne vous inquiétez donc pas si l’affichage n’est pas immédiat.

Oui, c’est un peu long, mais voir la connexion à votre site se faire via QUIC est plutôt satisfaisant. Je ne sais pas exactement pourquoi ça fonctionne parfois, mais sur certaines configurations, un simple redémarrage et quelques modifications du registre suffisent. L’important est de s’assurer que TLS 1.3 est activé, que les clés de registre nécessaires sont correctement configurées et que les règles du pare-feu sont bien paramétrées. Si tout est en place, les navigateurs compatibles HTTP/3 (comme Edge ou Chrome) l’utiliseront automatiquement.