Description
Sous ce nom barbare qu’est HSTS se cache une technique assez simple à mettre-en-œuvre et au bénéfice intéressant.
Cette technologie demande au client web de se connecter uniquement au protocole HTTPS, même si le serveur web permet la connexion sur le port associé au protocole HTTP. Cette technique transparente pour le client impose que toutes les connexions se font obligatoirement sur le port associé au protocole HTTPS, généralement le port 443.
Par contre, cette technique est très restrictive car elle empêche que le client web puisse contourner le protocole, en gérant finement les erreurs liées ; la finalité étant d’avertir le client des dysfonctionnements possibles.
Techniquement, c’est une entête HTTP !
C’est la première entête HTTPS à mettre en place, facile à gérer et nativement gérée par beaucoup de serveurs web !
Options
Il y a trois options, dont une absolument nécessaire !
max-age
définit la durée dans le temps pendant laquelle le client web est obligé à être redirigée. Cette durée, en nombre de secondes, doit être minimale de six mois, et maximale de deux ans. C’est l’option par défaut à implémenter !includeSubDomains
: cette directive oblige le client à traiter tous les sous-domaines relatifs à un nom de domaine à être eux aussi résolu en HTTPS !preload
: cette directive permet à votre domaine d’être géré par la liste de préchargement HSTS, après soumission. Elle a pour propos d’empêcher certaines attaques mais n’est vraiment recommandé que pour les sites dits sensibles. Si vous vous êtes soumis à ladite liste, il est impératif que l’option ‘‘includeSubDomains’’ soit gérée !
includeSubDomains
semble vraiment importante à
paramétrer sur votre nom de domaine principal. Celle-ci empêcherait une
attaque par détournement de DNS,
qui consiste à faire croire en l’usage d’un sous-domaine pour capturer
le trafic d’un client web et en prendre le contrôle. Du fait du rôle de
cette option, tout sous-domaine “déclaré” se voit obliger de communiquer
en HTTPS, en vérifiant les certificats, la relation avec le nom de domaine
principal et de sous-domaines et en interrogeant l’autorité de contrôle.Exemples
Strict-Transport-Security: max-age=63072000
:
Ce qui correspond à une période de deux années.
httpd
Pour le serveur web d’OpenBSD :
Code : httpd
server mon.domaine.net {
listen on * tls port 443
# Enable HTTP Strict Transport Security (defaults to 1 year).
hsts
(...)
}
nginx
Pour le serveur nginx :
add_header Strict-Transport-Security "max-age=31536000;" always;
Documentations
- Wikipédia : https://fr.wikipedia.org/wiki/HTTP_Strict_Transport_Security
- Support actuel : http://caniuse.com/#search=hsts