Wiki DNSprobe · Section HSTS

HTTP Strict Transport Security (HSTS) pour votre site Web

HSTS indique aux navigateurs d’utiliser systématiquement HTTPS pour votre domaine. Bien le configurer est l’une des étapes les plus importantes pour renforcer la sécurité de votre site.

Même si un site dispose déjà d’un certificat SSL valide, la toute première visite peut encore passer en HTTP clair si l’utilisateur saisit une URL http:// explicite ou suit un ancien lien non sécurisé.

HTTP Strict Transport Security (HSTS) comble cette faille en demandant aux navigateurs compatibles de basculer automatiquement en HTTPS et de mémoriser ce choix pendant une durée donnée.

DNSprobe vérifie la présence de l’en-tête HSTS sur votre site et vous aide à le configurer correctement, y compris pour une éventuelle participation à la liste de préchargement HSTS.

Comment DNSprobe teste HSTS pour votre domaine

Lors d’une analyse, la section SSL de DNSprobe effectue une requête HTTPS vers votre site et capture tous les en-têtes de la réponse finale.

Si un en-tête Strict-Transport-Security est présent, DNSprobe en affiche la valeur exacte et marque le test HSTS comme « Pass ». Sinon, il affiche un statut « Warn » avec des exemples de configuration.

Vous retrouvez également l’état HSTS dans la ligne de test dédiée et dans le SSL Evaluation Score global.

1. Qu’est-ce que HSTS ?

HSTS est un en-tête HTTP de réponse qui indique aux navigateurs d’imposer l’utilisation de HTTPS pour un domaine pendant une durée définie.

  • Il est diffusé via l’en-tête Strict-Transport-Security sur les réponses HTTPS.
  • Une fois qu’un navigateur a vu un en-tête HSTS valide, il refuse d’utiliser HTTP clair pour ce domaine tant que la période max-age n’est pas expirée.
  • HSTS peut, en option, s’appliquer à tous les sous-domaines et participer à une liste de préchargement intégrée directement dans les navigateurs.

2. Pourquoi activer HSTS sur votre site Web

Activer HSTS est fortement recommandé pour tout site qui doit être servi exclusivement en HTTPS.

Risques en l’absence de HSTS

Sans HSTS, un attaquant présent sur un réseau non fiable (Wi-Fi public, portail captif, etc.) peut interférer avec la première requête HTTP, forcer un downgrade vers HTTP ou injecter son propre contenu avant que le navigateur ne passe en HTTPS.

Bénéfices sécurité et expérience utilisateur

  • Les navigateurs réécrivent automatiquement les liens http:// en https:// pour votre domaine après la première réponse HSTS.
  • Les favoris, QR codes et redirections encore en HTTP ont moins de chances d’exposer les utilisateurs à du trafic non chiffré.
  • Combiné à une configuration SSL solide, HSTS relève fortement le niveau face aux attaques de type man-in-the-middle et downgrade.

3. Comment activer HSTS via les en-têtes HTTP

HSTS se configure en envoyant l’en-tête Strict-Transport-Security sur les réponses HTTPS de votre serveur Web ou de votre reverse proxy.

Syntaxe de l’en-tête Strict-Transport-Security

Un en-tête HSTS prêt pour la production ressemble généralement à ceci :

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

Activer HSTS sur Apache / LiteSpeed (.htaccess)

Sur Apache et LiteSpeed, vous pouvez ajouter l’en-tête dans la configuration du virtual host ou dans un fichier .htaccess :


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

Activer HSTS sur Nginx

Sur Nginx, ajoutez l’en-tête dans le bloc serveur HTTPS (et non dans le bloc HTTP) :

server {
    listen 443 ssl http2;
    server_name exemple.com www.exemple.com;

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

    # … configuration SSL et du site …
}

Frameworks applicatifs, CDN et reverse proxies

De nombreux CDN, équilibreur de charge et frameworks applicatifs permettent aussi d’injecter des en-têtes de réponse personnalisés. Où que vous le configuriez, assurez-vous que l’en-tête n’est ajouté que sur les réponses HTTPS et qu’il n’est pas dupliqué par des couches intermédiaires.

4. Liste de préchargement HSTS (HSTS preload)

La liste de préchargement HSTS est un ensemble de domaines intégrés directement dans les navigateurs, considérés comme HTTPS-only dès la toute première visite.

Conditions pour le préchargement HSTS

  • Servir un certificat valide pour votre domaine et tous les sous-domaines concernés.
  • Envoyer un en-tête HSTS avec un max-age d’au moins 31536000, incluant les directives includeSubDomains et preload.
  • Rediriger tout le trafic HTTP vers HTTPS et s’assurer que tous les sous-domaines sont accessibles en HTTPS.

Comment soumettre votre domaine au preload

  • Commencez par activer HSTS avec les bonnes directives et testez votre site en profondeur.
  • Vérifiez que toutes les requêtes HTTP sont redirigées vers HTTPS et qu’il n’y a plus de contenu mixte.
  • Soumettez ensuite votre domaine via le formulaire officiel de preload et suivez les instructions de validation affichées.

Vous pouvez ajouter votre domaine à la liste de préchargement HSTS ici : hstspreload.org

Le preload est pratiquement définitif : retirer un domaine de la liste peut prendre plusieurs mois. Ne l’activez que si vous êtes absolument certain que votre domaine et tous vos sous-domaines resteront exclusivement en HTTPS.

5. Dépannage et déploiement progressif

Parce qu’un HSTS mal configuré peut bloquer l’accès pour certains utilisateurs, il est prudent de le déployer par étapes.

  • Commencez avec un max-age faible (par exemple 300 ou 3600 secondes) et augmentez-le lorsque vous êtes sûr que tout fonctionne en HTTPS.
  • Si vous avez défini un en-tête trop agressif, réduisez le max-age et continuez à servir du HTTPS jusqu’à expiration des politiques mises en cache.
  • Évitez d’activer includeSubDomains ou preload tant que tous vos sous-domaines n’ont pas été audités et préparés.

Une fois qu’un navigateur a mis en cache une politique HSTS, il n’existe pas de moyen côté serveur pour l’effacer avant l’expiration du max-age. Les modifications ne prennent effet qu’une fois ce délai écoulé.

6. Tester HSTS manuellement depuis votre propre terminal

La section HSTS de DNSprobe vérifie si vos réponses HTTPS incluent l’en-tête Strict-Transport-Security et si les options comme includeSubDomains et preload sont activées. Vous pouvez inspecter le même en-tête depuis un terminal en utilisant curl sur la version HTTPS de votre site.

Linux : utiliser curl pour lire l’en-tête Strict-Transport-Security

Sur la plupart des distributions Linux, curl est installé ou disponible dans les dépôts par défaut. Les commandes suivantes récupèrent uniquement les en-têtes de réponse HTTP en HTTPS afin que vous puissiez vérifier la présence de HSTS et sa configuration :

                curl -I https://example.com/
    
                # Recherchez l’en-tête Strict-Transport-Security et vérifiez max-age, includeSubDomains et preload    
                curl -I https://sub.example.com/
    
                # Si vous utilisez includeSubDomains, testez également un sous-domaine pour confirmer que HSTS s’applique partout
        

macOS : utiliser curl avec les outils intégrés

macOS inclut curl dans ses outils en ligne de commande. Ouvrez Terminal et exécutez les mêmes commandes que sous Linux pour confirmer que vos réponses HTTPS incluent un en-tête Strict-Transport-Security avec les directives attendues :

                curl -I https://example.com/
    
                # Recherchez l’en-tête Strict-Transport-Security et vérifiez max-age, includeSubDomains et preload    
                curl -I https://sub.example.com/
    
                # Si vous utilisez includeSubDomains, testez également un sous-domaine pour confirmer que HSTS s’applique partout
        

Windows : utiliser curl depuis l’Invite de commandes ou PowerShell

Sur les versions récentes de Windows 10 et 11, curl est inclus par défaut. Depuis une fenêtre Invite de commandes ou PowerShell, vous pouvez utiliser curl exactement comme sous Linux/macOS pour vérifier votre en-tête HSTS :

                curl -I https://example.com/
    
                REM Recherchez l’en-tête Strict-Transport-Security et vérifiez max-age, includeSubDomains et preload    
                curl -I https://sub.example.com/
    
                REM Si vous utilisez includeSubDomains, testez également un sous-domaine pour confirmer que HSTS s’applique partout
        

Important : ne testez que des hôtes et domaines que vous possédez ou que vous êtes autorisé à analyser. Des vérifications automatisées et répétées des en-têtes HTTPS sur des systèmes tiers sans autorisation peuvent être considérées comme un comportement abusif par certains fournisseurs.

Résumé : HSTS, un pilier du durcissement HTTPS

Un certificat SSL valide est indispensable, mais HSTS comble le dernier écart en empêchant les navigateurs de revenir à HTTP clair pour votre domaine.

En mettant en évidence votre en-tête HSTS actuel et en fournissant des extraits prêts à l’emploi, DNSprobe vous aide à déployer HSTS en toute sécurité et, si nécessaire, à préparer votre domaine pour la liste de préchargement mondiale.

Passez en revue et activez HSTS sur vos sites principaux

Utilisez DNSprobe pour vérifier l’état HSTS de votre domaine principal et de vos sous-domaines critiques, puis travaillez avec vos équipes d’exploitation pour déployer des en-têtes HSTS robustes partout où le HTTPS est requis.

⚙️ Configuration