Pour compléter voretaq7 Vous pouvez également le faire en utilisant le fichier Web.config (N.B. : à utiliser uniquement pour les sites SSL, car il ajoutera l'en-tête pour les réponses HTTP et HTTPS, ce qui est contraire à la spécification RFC 6797, voir l'explication ci-dessous) - ajoutez un bloc comme suit :
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Strict-Transport-Security" value="max-age=31536000"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Évidemment, vous avez peut-être déjà un system.webServer
dans votre Web.config, alors ajoutez ceci à ce bloc, si c'est le cas. Nous préférons gérer les choses dans le Web.config plutôt que dans l'interface graphique, car cela signifie que les modifications de la configuration peuvent être validées dans notre dépôt Git.
Si vous vouliez gérer la redirection HTTP vers SSL, en tant que Greg Askew mentionné, vous pourriez trouver plus facile de le faire avec un site web séparé dans IIS. C'est ainsi que nous gérons l'obligation de SSL pour certains sites clients. Ce site ne contient qu'une redirection HTTP et un peu de information-divulgation des corrections, le tout dans le Web.config :
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<httpRuntime requestValidationMode="2.0" enableVersionHeader="false" />
</system.web>
<system.webServer>
<httpRedirect enabled="true" destination="https://www.domain.co.uk/"
httpResponseStatus="Permanent" />
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
<rewrite>
<outboundRules>
<rule name="Remove RESPONSE_Server">
<match serverVariable="RESPONSE_Server" pattern=".+" />
<action type="Rewrite" value="" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
C'est la solution que nous préférons pour plusieurs raisons : nous pouvons facilement enregistrer séparément le trafic redirigé (car il se trouve dans un journal IIS différent), cela n'implique pas plus de code dans Global.asax.cs (nous n'avons pas de code dans ce fichier, ce qui est un peu plus pratique pour un site Umbraco) et, surtout, cela signifie que toute la configuration est toujours conservée dans notre dépôt GIT.
Modifié pour ajouter : Pour être clair, afin de se conformer à RFC 6797 le Strict-Transport-Security
en-tête personnalisé NE DOIT PAS être ajouté aux demandes faites par HTTP non crypté. Pour être conforme à la RFC6797, vous DEVEZ avoir deux sites dans IIS, comme je l'ai décrit après le premier bloc de code. Comme Chris souligne que la RFC 6797 comprend :
Un hôte HSTS NE DOIT PAS inclure le champ d'en-tête STS dans les réponses HTTP acheminées par un transport non sécurisé.
donc envoyer le Strict-Transport-Security
en réponse à une demande non-SSL ne serait pas conforme à la spécification.