Imaginez que vous réservez une table sur le site d’un restaurant fictif, example.com. Vous ouvrez la page, choisissez un créneau, vous connectez à votre compte et réglez un acompte avec un module de paiement intégré. Pour vous, c’est un seul geste ; en coulisse, plusieurs systèmes se relaient : le site, un CDN, un service d’authentification et un prestataire de paiement.
TLS et les en-têtes de sécurité HTTP permettent à ces systèmes de coopérer sans s’exposer inutilement. TLS chiffre la connexion et permet au navigateur de vérifier l’identité du serveur ; les en-têtes de réponse lui donnent ensuite des consignes sur les contenus à charger, les cookies à protéger et les visites suivantes.
Portée de ce guide
Le snapshot gratuit, qui n’est pas un test d’intrusion, relève le protocole négocié lors d’une seule connexion TLS sans lister toutes les versions acceptées, vérifie surtout la présence des en-têtes (pas SameSite) et ne teste la redirection vers HTTPS que pour une adresse en http://.
1. Comprendre le rôle du certificat pendant la visite
Quand un navigateur se connecte en HTTPS, TLS chiffre la communication. Le navigateur vérifie que le certificat présenté couvre le nom demandé, qu’il est encore valide et qu’il se rattache, par une chaîne de certificats, à une autorité en laquelle il a confiance. Le certificat contient les noms couverts, sa période de validité et les informations nécessaires pour construire cette chaîne.
Dressez la liste des noms publics : domaine principal, « www », sous-domaines de services comme la boutique, le support ou l’API. Pour chacun, notez le fournisseur qui gère le certificat et la façon dont il est renouvelé. Un CDN et le serveur d’origine ont souvent des certificats distincts, renouvelés séparément, et celui de l’origine est facile à oublier. Côté protocoles, l’ANSSI conseille, dans ses recommandations de sécurité relatives à TLS, de privilégier TLS 1.3, d’accepter TLS 1.2 et de ne plus utiliser SSLv2, SSLv3, TLS 1.0 ni TLS 1.1 ; la fiche TLS de l’OWASP aide à choisir et à entretenir le reste de la configuration. Pour partir d’un fait observé, notez le protocole effectivement négocié lors d’une connexion réelle.
Les durées de validité raccourcissent. Selon le calendrier adopté par le CA/Browser Forum, un certificat TLS public émis depuis le 15 mars 2026 ne peut pas dépasser 200 jours de validité ; ce sera 100 jours à partir du 15 mars 2027, puis 47 jours à partir du 15 mars 2029. Let’s Encrypt, de son côté, n’envoie plus d’e-mails de rappel avant expiration depuis le 4 juin 2025. Automatisez donc le renouvellement et ajoutez une surveillance indépendante de l’échéance, qui vous alerte si un renouvellement n’a pas eu lieu.
2. Voir comment les couches se complètent
| Couche | Ce qu’elle apporte | Pratique utile |
|---|---|---|
| Certificat TLS | Une connexion chiffrée vers un serveur authentifié | Suivre les noms, les échéances et les responsables du renouvellement ; surveiller l’expiration |
| Content-Security-Policy | Des règles explicites sur les ressources que la page peut charger | Construire la politique à partir des ressources réellement utilisées |
| HSTS | HTTPS systématique lors des visites suivantes | Choisir la durée et la couverture des sous-domaines en connaissance de cause |
| frame-ancestors et X-Frame-Options | Le contrôle des sites autorisés à intégrer la page | Refuser l’intégration par défaut et l’autoriser au cas par cas |
| Attributs des cookies | Une session protégée qui suit le parcours | Tester la connexion, les services intégrés et les retours depuis des sites externes |
Ces mécanismes se complètent sans se remplacer. Le certificat protège la connexion ; les en-têtes décrivent le comportement attendu pour une réponse donnée. Toutes les pages n’ont pas le même rôle : un article public, un espace client et un widget conçu pour être intégré ailleurs méritent chacun une politique adaptée. L’OWASP résume bien leur portée : bien choisis, ces en-têtes aident à prévenir des familles de problèmes comme le cross-site scripting (XSS), le détournement de clic (clickjacking) ou la fuite d’informations.
3. Construire la CSP à partir des ressources réellement utilisées
L’en-tête Content-Security-Policy indique au navigateur d’où la page peut charger scripts, styles, images, polices, connexions réseau et cadres. Son usage principal est de limiter l’impact d’une injection de script (XSS) ; le guide CSP de MDN rappelle qu’elle ne dispense pas d’assainir les entrées. Commencez par un inventaire des ressources en parcourant tout le trajet du visiteur : les ressources de paiement, d’authentification ou de support n’apparaissent souvent qu’après une interaction.
Testez ensuite la politique envisagée avec l’en-tête Content-Security-Policy-Report-Only : le navigateur ne bloque rien, mais signale chaque violation dans la console et, si vous l’avez configurée, à une adresse de rapport. Rattachez chaque message à sa ressource, décidez de la règle voulue, puis appliquez la politique une fois les parcours représentatifs passés en revue. Les deux en-têtes peuvent coexister pendant la transition. Attention : le mode rapport et la directive frame-ancestors ne fonctionnent qu’en en-tête HTTP, pas dans une balise <meta>.
Pour les scripts, la pratique recommandée par MDN est une politique dite stricte, fondée sur des nonces ou des empreintes (hashes) plutôt que sur une longue liste de domaines. Évitez 'unsafe-inline', qui annule une grande partie de l’intérêt de la CSP. Les scripts tiers qui en chargent d’autres ou utilisent du code inline compliquent parfois cette approche ; c’est un point à voir avec leurs éditeurs. Enfin, default-src sert de valeur de repli aux autres directives de chargement, mais pas à frame-ancestors : une politique default-src 'none' sans frame-ancestors laisse n’importe quel site intégrer la page. Un inventaire documenté facilite l’évaluation des ajouts futurs et justifie chaque autorisation.
4. Faire de HTTPS une habitude du navigateur
L’en-tête Strict-Transport-Security (HSTS) demande au navigateur de n’utiliser que HTTPS pour un hôte pendant une durée fixée en secondes par max-age, et de convertir automatiquement en HTTPS toute tentative ultérieure en HTTP. Le navigateur n’apprend cette politique que d’une réponse HTTPS valide : reçu en HTTP, l’en-tête est ignoré. La redirection de HTTP vers HTTPS ne doit donc pas le porter ; c’est la réponse HTTPS qui l’envoie. HSTS ne protège pas non plus la toute première visite, avant que le navigateur ait reçu l’en-tête. Autre conséquence à connaître : sur un hôte HSTS, le navigateur ne propose pas de passer outre une erreur de certificat, si bien qu’un certificat expiré rend le site inaccessible aux visiteurs qui le connaissent déjà.
L’ANSSI juge nécessaire de déployer HSTS dans ses recommandations pour la mise en œuvre d’un site web, en rappelant qu’un accès durable en HTTPS en est le préalable. Montez la durée par paliers (cinq minutes, une semaine, un mois) en vérifiant à chaque étape que rien ne casse, avant de passer à une durée longue, souvent un ou deux ans. L’option includeSubDomains étend la règle à tous les sous-domaines : reliez ce choix à l’inventaire des noms et assurez-vous qu’aucun sous-domaine, même interne, ne dépend encore de HTTP. Chaque sous-domaine a d’ailleurs intérêt à envoyer son propre en-tête, car un visiteur n’a peut-être jamais consulté le domaine principal. Pour revenir en arrière, max-age=0 désactive HSTS, à condition d’être reçu en HTTPS.
Le préchargement (preload) inscrit le domaine dans une liste intégrée aux navigateurs, ce qui couvre aussi la première visite. C’est un engagement à long terme. Le site hstspreload.org, qui reçoit les demandes d’inscription à cette liste, recommande toujours HSTS mais déconseille désormais le préchargement, puisque des navigateurs comme Chrome et Safari convertissent déjà automatiquement les navigations HTTP en HTTPS. Il précise qu’un retrait de la liste prend des mois et demande aux outils de ne pas ajouter preload par défaut. L’explication HSTS de MDN détaille ces options.
6. Observer le résultat côté visiteur
Ouvrez une page avec les outils de développement du navigateur, onglet Réseau, et suivez les redirections jusqu’à la réponse finale. Examinez le certificat, les en-têtes et les cookies réellement reçus : vous reliez ainsi la configuration à l’expérience du visiteur et repérez quel service pose chaque réglage. En ligne de commande, curl -sI https://example.com/ affiche les en-têtes d’une réponse. Testez aussi l’adresse en http:// : selon le guide TLS de MDN, le port 80 doit rediriger vers la même ressource en HTTPS, d’abord sur le même nom d’hôte, et la page MDN sur HSTS conseille une redirection permanente, par exemple un code 301. Pour contrôler les en-têtes un par un avec les DevTools ou curl, avec des valeurs de départ sûres, consultez le guide pour vérifier les en-têtes de sécurité HTTP.
- Visitez en HTTPS chaque nom public pris en charge, puis la même adresse en HTTP.
- Notez les détails du certificat (émetteur, échéance) et la politique de la réponse finale.
- Parcourez la connexion, la récupération de compte, le paiement intégré et les retours depuis des sites externes.
- Relisez la console et la destination des rapports CSP.
Vérifiez aussi les pages d’erreur, en 404 comme en 500 : ce sont souvent elles qui perdent les en-têtes. Conservez un relevé daté de la configuration et le nom du responsable de chaque couche. Lors d’un changement d’hébergement ou d’intégration, rejouez le même parcours. Un déploiement planifié, avec la configuration précédente à portée de main, permet de revenir en arrière sans improviser, et la liste qui en résulte aide les personnes qui maintiendront le site ensuite à le prendre en main.
Pour vérifier dès maintenant les en-têtes d’un site, utilisez le vérificateur d’en-têtes de sécurité HTTP gratuit.
7. Garder la carte des protections à portée de main
Rassemblez au même endroit les noms publics, les responsables des certificats, les ressources chargées par le navigateur et les parcours importants. Pour un premier relevé, le snapshot gratuit de Sitelemetry exécute huit contrôles passifs sur une origine publique, sans inscription ; ce n’est pas un test d’intrusion. Côté TLS, il établit une connexion et relève la confiance de la chaîne, l’échéance (alerte à 30 jours ou moins) et le protocole négocié, sans dresser la liste de toutes les versions et suites prises en charge. Côté en-têtes, il lit la réponse finale de la page d’accueil, après au plus cinq redirections, et vérifie surtout la présence de CSP, de HSTS, d’une protection contre l’intégration en cadre (frame-ancestors ou X-Frame-Options), de nosniff et de Referrer-Policy, ainsi que HttpOnly et Secure sur les cookies de cette réponse ; SameSite n’est pas vérifié. Un max-age HSTS inférieur à 180 jours apparaît comme un point à revoir ; pendant une montée par paliers, c’est normal. La redirection de HTTP vers HTTPS n’est testée que si vous saisissez une adresse en http://, et le contrôle TLS est alors omis. Le résultat tient en un score, une note de durcissement distincte et jusqu’à trois signaux à examiner en premier.
Le guide pour tester la sécurité d’un site web montre comment ces couches s’articulent avec les comptes, les permissions et l’entretien courant.
Questions fréquentes
Comment TLS et les en-têtes de sécurité HTTP travaillent-ils ensemble ?
TLS chiffre la connexion et permet au navigateur de vérifier l’identité du serveur. Les en-têtes de réponse indiquent ensuite comment traiter le contenu reçu, les cookies de session et les visites suivantes.
Que fait exactement l’attribut HttpOnly d’un cookie ?
Il empêche les scripts de la page de lire le cookie, par exemple via document.cookie. Le navigateur continue d’envoyer le cookie avec les requêtes correspondantes, et le cookie n’est pas chiffré pour autant. HttpOnly limite le vol de cookie en cas de faille XSS, sans empêcher la faille elle-même.
Comment introduire une CSP sans casser le site ?
Inventoriez les ressources utilisées pendant des parcours représentatifs, observez la politique envisagée avec l’en-tête Content-Security-Policy-Report-Only, traitez les violations signalées, puis appliquez la politique. Préférez des nonces ou des empreintes à 'unsafe-inline'.
Faut-il activer le préchargement HSTS ?
Pas par défaut. hstspreload.org recommande HSTS mais déconseille désormais le préchargement, et un retrait de la liste prend des mois. Montez d’abord max-age par paliers, et n’ajoutez includeSubDomains que si tous les sous-domaines fonctionnent en HTTPS.
Que mettre dans le registre des certificats ?
Les noms publics, le fournisseur de chaque certificat, l’échéance, la méthode et le responsable du renouvellement, les particularités du CDN ou de l’origine, et l’outil de surveillance qui alerte avant expiration. Relisez-le à chaque changement d’hébergement ou de domaine.
Sources et lectures
- MDN : en-tête Content-Security-Policy-Report-Onlydeveloper.mozilla.org
- MDN : guide Content Security Policy (CSP)developer.mozilla.org
- MDN : directive CSP frame-ancestorsdeveloper.mozilla.org
- MDN : HTTP Strict Transport Securitydeveloper.mozilla.org
- MDN : en-tête Set-Cookiedeveloper.mozilla.org
- MDN : X-Content-Type-Optionsdeveloper.mozilla.org
- MDN : configuration TLS (guide pratique)developer.mozilla.org
- OWASP : en-têtes HTTPcheatsheetseries.owasp.org
- OWASP : sécurité TLScheatsheetseries.owasp.org
- HSTS Preload List Submissionhstspreload.org
- ANSSI : recommandations pour la mise en œuvre d’un site web (standards de sécurité côté navigateur)messervices.cyber.gouv.fr
- ANSSI : recommandations de sécurité relatives à TLSmesservices.cyber.gouv.fr
- CA/Browser Forum : ballot SC081v3 (réduction des durées de validité)cabforum.org
- Let’s Encrypt : fin du service de rappel d’expirationletsencrypt.org
Préparé par la rédaction de Sitelemetry. Les sources citées permettent d’approfondir chaque sujet.



