%

HSTS : HTTP Strict Transport Security (header)

Article publié, le et modifié le
2 minutes de lecture

Cet article contient 419 mots.
Source brute de l'article :
Commit version : 03259cc

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 !
Attention

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

RFC 6797

IETF Tools
HTML, PDF, TXT
RFC Editor
HTML, PDF, TXT