Guides

Guide de sécurité

TLS, HTTPS et sécurité web moderne : guide pratique

HTTPS ne se résume pas à un cadenas. Établissez une chaîne fiable, de l’émission du certificat au trafic chiffré vers l’origine, puis prouvez qu’elle fonctionne.

TLS est le protocole qui établit une connexion authentifiée et chiffrée entre deux points de terminaison. HTTPS est HTTP transporté par TLS. Ensemble, ils protègent la confidentialité et l’intégrité des requêtes et des réponses, et permettent à un navigateur de vérifier qu’il communique avec le nom d’hôte attendu.

Cette protection n’est pas automatique du seul fait qu’un certificat existe. Un site peut proposer HTTPS au navigateur tout en envoyant du trafic non chiffré de son fournisseur de périphérie vers son origine. Il peut également exposer une ancienne version de TLS, servir du contenu mixte, laisser expirer des certificats ou s’appuyer sur une redirection avant que HSTS ne soit appris. Une implémentation solide considère l’ensemble du cheminement de la requête comme un système.

Ce que TLS protège réellement

La négociation TLS fixe les paramètres du protocole, authentifie le serveur au moyen d’un certificat et établit des clés de trafic temporaires. Après cette négociation, TLS offre trois propriétés utiles :

  • Authentification : le certificat associe une clé publique à un nom d’hôte qu’une autorité de certification de confiance a validé.
  • Confidentialité : les observateurs sur le réseau ne peuvent pas lire les données applicatives échangées une fois le canal sécurisé établi.
  • Intégrité : un attaquant ne peut pas modifier silencieusement des requêtes ou réponses protégées sans être détecté.

TLS ne rend pas à lui seul une application digne de confiance. Il ne corrige ni les défauts d’autorisation, ni les vulnérabilités d’injection, ni les secrets divulgués, ni les dépendances non sécurisées, ni une origine qui accepte du trafic de partout. Pour ces sujets, associez la sécurité du transport à un pare-feu applicatif web, à des contrôles d’identité robustes et à une validation au niveau applicatif.

La base actuelle est TLS 1.3, TLS 1.2 n’étant conservé que lorsqu’une exigence de compatibilité documentée le justifie. TLS 1.0 et 1.1 sont obsolètes. TLS 1.3 supprime les anciennes suites cryptographiques et assure la confidentialité persistante avec son échange de clés normal, mais des fonctionnalités telles que 0-RTT demandent de la prudence, car les données précoces peuvent être rejouées.

Une séquence d’implémentation

1. Cartographiez chaque nom d’hôte et chaque connexion

Commencez par un inventaire, pas par un changement de configuration. Listez les sites publics, API, consoles d’administration, hôtes d’assets, webhooks, domaines de préproduction, noms d’hôte propres aux clients et points de terminaison d’origine. Pour chacun, consignez qui termine TLS, quel certificat le couvre, comment il est renouvelé et si le saut suivant utilise HTTP ou HTTPS.

Incluez les clients autres que les navigateurs. Les applications mobiles, prestataires de paiement, intégrations partenaires, systèmes de supervision et clients en ligne de commande peuvent avoir des contraintes de compatibilité différentes. Un client ancien non documenté n’est pas une raison de conserver des paramètres faibles sur tous les noms d’hôte ; isolez-le et fixez une date de retrait.

2. Émettez et automatisez les certificats

Utilisez des certificats dont les noms correspondent aux noms d’hôte effectivement demandés par les clients. Privilégiez l’émission et le renouvellement automatisés, protégez les clés privées, limitez qui peut les récupérer et alertez avant leur expiration. Utilisez les certificats génériques délibérément, car la compromission d’une clé générique peut affecter de nombreux hôtes.

Testez le renouvellement dans un parcours hors production et vérifiez que la chaîne de certificats complète est servie. Un certificat peut être valide sur le serveur et pourtant échouer côté client si un certificat intermédiaire manque ou si un nom d’hôte est absent des noms alternatifs du sujet du certificat.

3. Configurez un TLS moderne

Définissez TLS 1.3 comme protocole préféré et ne conservez TLS 1.2 que si votre population de clients mesurée en a besoin. Désactivez SSL et TLS 1.0/1.1. Utilisez des suites de chiffrement authentifié standard ainsi qu’une configuration fournisseur ou serveur qui reçoit des mises à jour de sécurité. Ne maintenez pas à la main une liste de chiffrements copiée d’un ancien article de blog ; examinez-la au regard des recommandations actuelles de Mozilla ou d’OWASP et des exigences de vos clients.

Soyez prudent avec la reprise de session et 0-RTT. La reprise peut réduire le coût de la négociation, mais une application ne doit pas considérer comme sûres pour les paiements, changements de mot de passe, créations de commande ou autres actions non idempotentes des requêtes 0-RTT rejouables. Désactivez les données précoces pour ces routes ou imposez une défense applicative contre les rejouements.

4. Redirigez HTTP et supprimez le contenu mixte

Servez une redirection permanente de HTTP vers l’URL HTTPS canonique pour les sites destinés aux navigateurs. Gardez la redirection directe : http://example.com/page doit mener à l’URL HTTPS finale, sans plusieurs sauts de nom d’hôte et de chemin. Les API et points de terminaison sensibles ne doivent pas du tout accepter de trafic en clair lorsque l’architecture le permet.

Mettez à jour les URL absolues dans le HTML, le CSS, JavaScript, les images, les polices, les balises canoniques, les sitemaps et les configurations tierces. Le contenu mixte peut casser des fonctionnalités ou affaiblir discrètement le modèle de sécurité de la page. Une Content Security Policy avec upgrade-insecure-requests peut aider avec les références historiques pendant leur suppression, mais elle ne remplace pas la correction des URL sources.

5. Ajoutez HSTS par étapes

L’en-tête de réponse Strict-Transport-Security indique à un navigateur d’utiliser HTTPS pour ses futures requêtes vers un hôte. Vérifiez d’abord que chaque nom d’hôte concerné prend en charge HTTPS, y compris les sous-domaines rarement visités. Commencez avec un max-age court, surveillez, puis augmentez-le après les tests. N’ajoutez includeSubDomains que lorsque toute l’arborescence des sous-domaines est prête. Considérez preload comme un engagement distinct : il peut rendre une récupération HTTP difficile et impose des conditions d’éligibilité strictes.

HSTS est envoyé dans les réponses HTTPS. Il ne peut pas protéger la toute première requête HTTP, sauf si le domaine est déjà dans une liste de préchargement du navigateur ; des redirections correctes, des liens sécurisés et des opérations sur les certificats restent donc essentiels.

Chiffrez les deux segments d’une requête CDN

Si Cloudflare, Fastly ou un autre fournisseur de périphérie termine le TLS des visiteurs, configurez et validez séparément la connexion entre la périphérie et l’origine. Une connexion sécurisée entre le navigateur et la périphérie n’est pas une protection de bout en bout lorsque la périphérie utilise HTTP en clair vers l’origine. Préférez HTTPS vers l’origine avec validation du certificat et restreignez autant que possible l’accès direct à l’origine.

6. Complétez la couche de sécurité web

Marquez les cookies de session avec Secure, HttpOnly et une politique SameSite intentionnelle. Définissez une Content Security Policy en mode rapport seul avant son application, puis utilisez les rapports de violation pour supprimer les dépendances non sûres. Examinez Referrer-Policy, Permissions-Policy, les protections contre le détournement de clics et les règles de cache pour les réponses privées. Ne mettez jamais en cache des pages authentifiées ou des réponses API personnalisées sans une politique de cache explicite et testée.

TLS protège le canal ; l’autorisation protège la ressource. Pour les API, ajoutez l’authentification, la validation de schéma, des limites de débit et des contrôles contre les abus plutôt que de supposer que HTTPS rend un point de terminaison sûr. Le guide Optimi sur la protection des API couvre cette frontière plus en détail. Pour une conception plus large de l’identité et des accès, consultez le guide sur le zero trust pour les applications web.

Comment valider le résultat

Testez depuis l’extérieur de votre réseau et depuis des emplacements représentatifs de vos clients. Au minimum :

  • Demandez HTTP et confirmez une unique redirection permanente intentionnelle vers l’URL HTTPS canonique.
  • Inspectez le certificat HTTPS, la couverture des noms d’hôte, la chaîne, l’expiration et la version TLS négociée.
  • Récupérez des pages et assets représentatifs afin de détecter le contenu mixte, les en-têtes de sécurité manquants et une mise en cache accidentelle.
  • Testez chaque route d’origine indépendamment. Confirmez qu’un certificat d’origine invalide ou expiré échoue de manière fermée au lieu de revenir silencieusement à HTTP.
  • Exercez la connexion, le paiement, les webhooks, les mutations d’API et les téléversements de fichiers. Confirmez que les contrôles de sécurité ne cassent pas les parcours légitimes.
  • Surveillez le renouvellement des certificats, les échecs de négociation, les réponses HTTP 5xx, les erreurs de connexion à l’origine et les rapports liés à HSTS.

Les vérifications utiles en ligne de commande comprennent curl -I http://example.com, curl -I https://example.com et openssl s_client -connect example.com:443 -servername example.com. Associez-les aux panneaux de sécurité du navigateur et à un scanner TLS externe.

Erreurs fréquentes

  • Considérer le cadenas du navigateur comme la preuve que l’origine est chiffrée.
  • Activer HSTS avec includeSubDomains avant d’avoir audité les sous-domaines oubliés.
  • Activer le préchargement HSTS sans processus de récupération et de propriété testé.
  • Conserver des protocoles obsolètes pour un client hypothétique non mesuré.
  • Utiliser 0-RTT pour des requêtes qui modifient l’état sans protection contre les rejouements.
  • Envoyer des secrets dans des URL, où ils peuvent apparaître dans l’historique, les journaux ou les référents.
  • Faire tourner des certificats ou des clés sans tester le renouvellement, le retour arrière et la supervision.
  • Supposer qu’un WAF ou un CDN remplace l’authentification et l’autorisation selon le principe du moindre privilège.

Pour un examen managé de la frontière entre périphérie et application, contactez Optimi. Comparez cette approche avec le guide zero trust et la checklist SEO technique à la périphérie.

Il n’y a que deux choses difficiles en informatique : l’invalidation du cache et nommer les choses.

Faites de HTTPS un élément d’une conception de sécurité complète

Échangez avec notre équipe sur TLS, le chiffrement de l’origine, la politique WAF et les contrôles autour de votre trafic web.

Contactez-nous