Activer le dispositif HSTS (HTTP Strict Transport Security) pour votre domaine

Le HSTS ou HTTP Strict Transport Security est une amélioration de sécurité spécifiée par une application / serveur Web via l'utilisation d'un en-tête de réponse spécial nommé "Strict Transport Security".

Lorsqu'un navigateur pris en charge reçoit cet en-tête, il empêche les connexions HTTP vers le domaine spécifié et envoie à la place toutes les communications via HTTPS. Le chiffrement SSL par un certificat pour avoir du HTTPS est une condition préalable à l'utilisation de HSTS, car sinon l'activation de HSTS rendra votre site inaccessible.

Le HSTS améliore ainsi la sécurité des visiteurs d'un site Web en empêchant les navigateurs Web d'accéder au site par des connexions HTTP peu fiables. Si les visiteurs ne peuvent se connecter via HTTPS, le site Web ne sera plus disponible.

En outre, le HSTS spécifie une période de temps durant laquelle le navigateur (ou tout autre agent utilisateur) doit accéder au serveur uniquement de façon sécurisée via HTTPS.

 

Le dispositif HSTS aide en cela à protéger les utilisateurs de sites web contre quelques attaques réseau passives et actives. Par exemple, une attaque du type "man-in-the-middle" ne peut pas intercepter de requête tant que le HSTS est actif sur un site web.

Le HSTS permet de se prémunir également contre les attaques consistant à capturer votre trafic réseau HTTP vers n’importe quel site Web qui s’appuierait uniquement sur des redirections 301 pour basculer du HTTP en HTTPS.

Le HSTS force les navigateurs et les applications à utiliser, lorsque cela est possible, une connexion HTTPS. Même lorsque l’internaute tape uniquement « www » ou « http:// ».


NB  : Il ne suffit pas de configurer des redirections 301 pour sécuriser entièrement votre nom de domaine en basculant le trafic http:// vers https://. Le manque de sécurité de la redirection HTTP laisse en effet la porte ouverte à une éventuelle attaque.

 

Activer le HSTS

Le HSTS peut être activé à l'aide d'un simple en-tête, qui est ajouté à toutes les réponses envoyées par votre serveur :

Strict-Transport-Security: max-age=300; includeSubDomains; preload

Vous pouvez l'inclure dans le fichier de configuration de votre serveur web. Par exemple, dans Nginx, vous pouvez définir l'en-tête en incluant une ligne  add_header  dans votre bloc serveur :

add_header Strict-Transport-Security "max-age=300; includeSubDomains; preload; always;"

Et pour Apache, la commande est similaire, en utilisant la ligne  Header always set  :

Header always set Strict-Transport-Security "max-age=300; includeSubDomains; preload"

 

Les étapes initiales présentées ci-après permettent de tester vos applications Web, la connexion utilisateur et la gestion de sessions.

  • Faites expirer le HSTS toutes les 5 minutes idéalement
  • Continuez à le tester par intervalles, d'abord pendant une semaine, puis pendant un mois, jusqu'à ce que vous soyez certain qu'il n'y a pas de problème
  • Résolvez les problèmes qui pourraient survenir lors de votre déploiement
  • Modifiez le paramètre « max-age=xxx » : une semaine = 604800 ; un mois = 2592000
  • Ajoutez le preload une fois les tests terminés

Si vous trouvez que le HSTS fonctionne bien avec vos applications Web, modifiez « max-age » sur 63072000. Cela correspond à une durée de 2 ans — ce qu’exige le projet « Chromium » dans votre demande d’inscription sur la liste prédéfinie de sites dont la connexion doit se faire en HSTS !

 

Exigences permanentes du HSTS

  • Votre site Web doit avoir un certificat SSL valide, installé et actif. Vérifiez que vos certificats sont correctement installés et fonctionnent bien.
  • Rediriger TOUS les liens HTTP vers HTTPS avec une redirection 301 permanente.
  • Votre certificat SSL doit couvrir TOUS les sous-domaines. Pour cela, il est nécessaire de commander un certificat de type Wildcard. Sinon, vous serez en sécurité avec un certificat SSL de validation de domaine (DV), à validation d'organisation (OV) ou à validation étendue (EV).
  • Envoyer un en-tête HSTS sur le domaine de base pour les requêtes HTTPS.
  • Le paramètre « Max-age » doit être défini sur au moins 10886400 secondes ou 18 semaines. Optez pour la valeur « deux ans » (63072000), comme indiqué plus haut.
  • La directive « includeSubDomains » doit, le cas échéant, être spécifiée !
  • La directive « preload » doit être spécifiée.

 

 

Plus d'informations sur le HSTS :

Améliorer la sécurité de vos sites Web et les connexions serveur chiffrées
https://www.globalsign.com/fr/blog/
https://www.globalsign.com/fr/rechercher?search_paths%5B%5D=%2Ffr&query=HSTS