Qu'est-ce que HSTS ?

HSTS (HTTP Strict Transport Security) est un en-tête de réponse qui demande aux navigateurs de n'utiliser que HTTPS pour un site pendant une durée définie, pour que les visites suivantes ne puissent pas être rétrogradées vers HTTP en clair.

Un site envoie l'en-tête Strict-Transport-Security en HTTPS, avec un max-age en secondes. Dès lors, et pendant cette durée, le navigateur réécrit tout lien http:// vers le site en https:// avant d'envoyer quoi que ce soit, et refuse de laisser l'utilisateur passer outre les erreurs de certificat. includeSubDomains étend la règle à tous les sous-domaines.

La première visite reste sans protection, car le navigateur n'a pas encore vu l'en-tête. La liste de préchargement (preload) comble cette lacune : les domaines qui envoient l'en-tête avec un max-age long, includeSubDomains et le jeton preload peuvent être soumis à une liste intégrée aux navigateurs. Certains TLD entiers, comme .app et .dev, figurent sur cette liste.

HSTS est facile à activer et lent à désactiver. Une fois que les navigateurs ont mis en cache un max-age long, ou que le domaine est préchargé, chaque sous-domaine doit fonctionner en HTTPS avec un certificat valide, y compris les hôtes internes ou anciens. Commencez par un max-age court, vérifiez tous les sous-domaines, puis augmentez-le. L'en-tête est ignoré lorsqu'il est envoyé en HTTP en clair.

Exemple

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

Vérifier

Voyez ce que cela donne sur un vrai domaine (HSTS) :

État du site