Configurer HSTS sur IIS 7/8
Il est possible de configurer HSTS sur IIS à partir de la version 7.
Compte-tenu du fait qu'une implémentation de HSTS consiste principalement en un jeu de headers (entêtes) spécifiques, avec éventuellement une redirection, il existe plusieurs méthodes afin de configurer HSTS pour IIS.
Via la console graphique
Attention, il n'est pas possible d'écrire des conditions sur l'application des Headers. Les spécifications HSTS précisent clairement qu'il est nécessaire de ne servir les headers HSTS uniquement en HTTPS et pas en HTTP, cette méthode nécessite d'utiliser deux sites différents pour le HTTPS et pour le HTTP afin de respecter la norme HSTS.
Pour ajouter un nouveau header :
- Lancez le manager IIS.
- Sélectionnez votre site.
- Sélectionnez HTTP Response Headers.
- Cliquez sur Add dans la section Actions.
- Dans le dialogue Add Custom HTTP Response Header, ajoutez les
valeurs suivantes :
- Pour Name : Strict-Transport-Security
- Pour Value : max-age=15552001; includeSubDomains; preload
Il est à noter qu'il est également recommandé de rediriger le traffic HTTP en HTTPS.
Via l'édition manuelle de la configuration IIS
Vous pouvez également configurer plus finement vos headers et redirections en éditant directement la configuration de IIS, plus particulièrement la section system.webServer.
Vous pouvez ajouter les instructions suivantes à votre section system.webServer pour ajouter les headers nécessaires à l'activation de HSTS et effectuer une redirection HTTP vers HTTPS automatiquement :
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="HTTP to HTTPS redirect" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="off" ignoreCase="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> </rule> </rules> <outboundRules> <rule name="Add Strict-Transport-Security when HTTPS" enabled="true"> <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" /> <conditions> <add input="{HTTPS}" pattern="on" ignoreCase="true" /> </conditions> <action type="Rewrite" value="max-age=31536000; includeSubDomains; preload" /> </rule> </outboundRules> </rewrite> </system.webServer> </configuration>
Voir aussi
- Headers personnalisés sur IIS
- Documentation de configuration IIS
- Configuration de la section system.webServer
- Configuration des redirections HTTP dans la section webServer
- Documentation additionnelle sur la configuration de la section system.webServer
- Discussion non officielle au sujet d'HSTS sur IIS
- Rediriger le HTTP vers le HTTPS sur IIS