1 Introduction
Le cadenas dans la barre d'adresse, c'est TLS : le protocole qui chiffre les échanges entre un visiteur et votre serveur, et qui prouve que le serveur est bien exemple.fr et pas quelqu'un placé au milieu. Chaque page HTTPS, chaque appel d'API et chaque formulaire de connexion en dépend.
En tant que propriétaire du domaine, vous maîtrisez deux choses : la configuration du serveur (quelles versions du protocole et quels algorithmes de chiffrement il accepte) et le certificat qu'il présente (qui l'a émis, quels noms il couvre, quand il expire). Le bloc TLS d'un scan de domaine fait le point sur les deux. La plupart des problèmes se règlent en quelques lignes de configuration, ou en automatisant le renouvellement du certificat.
2021
TLS 1.0 et 1.1 officiellement dépréciés par l'IETF (RFC 8996)
1.2 + 1.3
Les seules versions qu'un site public devrait accepter aujourd'hui
47 jours
Durée de vie maximale d'un certificat votée par le CA/Browser Forum pour 2029, contre 398 auparavant
2 Comment ça marche
Avant d'envoyer la moindre page, le navigateur et le serveur passent par une négociation (le handshake). Le scanner fait exactement comme un navigateur : il se connecte à votre domaine sur le port 443, mène la négociation jusqu'au bout et note ce qui en sort.
Négocier
Le client annonce les versions et les suites de chiffrement qu'il connaît. Le serveur choisit une de chaque dans sa propre liste.
Prouver son identité
Le serveur envoie son certificat et les certificats intermédiaires qui le rattachent à une autorité racine déjà connue du client.
Vérifier
Le client contrôle la chaîne, les dates, et la présence du nom demandé dans le certificat. Le moindre échec déclenche une alerte du navigateur.
Lire le bloc TLS du rapport
Les pastilles du haut résument cette négociation : Protocol (vert pour TLSv1.2 ou TLSv1.3), Cipher (la suite négociée), Trusted (la chaîne est-elle valide), Hostname (le nom correspond ou non) et Expires in, qui passe au rouge sous 15 jours. En dessous viennent le sujet, l'émetteur et les dates du certificat, puis la liste Findings avec ce que le scanner a relevé. Si le bloc indique « No TLS service responded on port 443 », votre domaine ne sert tout simplement pas de HTTPS sur son nom principal.
3 Analyse détaillée
Versions du protocole
SSL 2.0, SSL 3.0, TLS 1.0 et TLS 1.1 ont tous des faiblesses connues et les navigateurs actuels les refusent. TLS 1.2 reste sûr s'il est bien configuré, et TLS 1.3 (RFC 8446, 2018) a supprimé la plupart des vieilles options qui posaient problème. Acceptez ces deux versions, et rien d'autre :
# nginx
ssl_protocols TLSv1.2 TLSv1.3;
# Apache
SSLProtocol -all +TLSv1.2 +TLSv1.3
La pastille montre ce qui a été négocié, pas tout ce que vous autorisez
Un TLSv1.3 vert signifie qu'un client moderne a obtenu une connexion moderne. Une vieille version peut rester activée pour les clients qui la demandent. Pour la tester explicitement : openssl s_client -connect exemple.fr:443 -tls1_1. Un échec de la négociation est le résultat attendu (certaines versions récentes d'OpenSSL refusent même d'essayer, ce qui ne dit rien de votre serveur).
Vérifiez chaque point où TLS se termine
Si un CDN, un répartiteur de charge ou le panneau de votre hébergeur est placé devant le serveur, c'est lui qui fixe la version vue par les visiteurs, pas nginx. Cherchez un réglage « version TLS minimale » dans ce produit et mettez-le à 1.2.
« Mais un vieux client a besoin de TLS 1.0 »
Certains appareils très anciens ou systèmes embarqués, oui. Donnez-leur un nom d'hôte séparé avec sa propre configuration plutôt que d'affaiblir le site principal pour tout le monde.
Suites de chiffrement
Une suite de chiffrement (cipher suite) regroupe les algorithmes utilisés pour une connexion : échange de clés, chiffrement et intégrité. Le nom affiché dans le rapport, par exemple TLS_AES_256_GCM_SHA384 ou ECDHE-RSA-AES128-GCM-SHA256, se lit comme une recette.
TLS 1.3 : rien à choisir
Les suites TLS 1.3 activées par défaut sur les serveurs sont toutes considérées comme sûres. Si la connexion se fait en TLS 1.3, le chiffrement est bon.
TLS 1.2 : gardez ECDHE avec AES-GCM ou ChaCha20-Poly1305
ECDHE apporte la confidentialité persistante (forward secrecy) : une clé volée demain ne permet pas de déchiffrer le trafic enregistré aujourd'hui. Les suites qui commencent par un échange RSA simple ne l'ont pas. Supprimez tout ce qui contient RC4, 3DES, NULL, EXPORT ou anon.
N'écrivez pas la liste à la main. Reprenez le profil « intermediate » du Mozilla SSL Configuration Generator pour votre serveur et sa version. Pour nginx, l'essentiel ressemble à ceci :
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
ssl_prefer_server_ciphers off;
Validité du certificat : confiance, nom et dates
Ce sont ces contrôles qui déclenchent l'alerte pleine page du navigateur. Quand l'un d'eux est rouge, c'est par là qu'il faut commencer.
Trusted : no
La chaîne n'a pas pu être validée. Causes habituelles : un certificat auto-signé, un certificat expiré, ou un intermédiaire manquant. Ce dernier cas est trompeur : certains navigateurs de bureau vont chercher la pièce manquante tout seuls, donc le site vous paraît normal, alors que curl, les applis mobiles et les clients d'API échouent. Dans nginx, ssl_certificate doit pointer vers la chaîne complète (avec certbot, fullchain.pem et non cert.pem).
Hostname : mismatch
Le certificat ne contient pas le nom demandé. Les navigateurs ne regardent que la liste Subject Alternative Name (SAN), pas le Common Name. Cas classique : un certificat pour www.exemple.fr servi sur exemple.fr. Faites-le réémettre avec les deux noms.
Expires in : moins de 15 jours
Avec un renouvellement automatique, un certificat est normalement remplacé une trentaine de jours avant son expiration. S'il est encore là à deux semaines de la fin, le renouvellement échoue sans doute en silence (enregistrement DNS modifié, pare-feu qui bloque le challenge ACME, tâche cron qui ne tourne plus). Lancez-le à la main (certbot renew --dry-run) et lisez l'erreur.
Des durées de vie plus courtes arrivent : automatisez maintenant
Les certificats publics ont été limités à 398 jours en 2020, et le CA/Browser Forum a voté une baisse par paliers jusqu'à 47 jours en 2029. Renouveler à la main une fois par an ne sera bientôt plus possible. Passez par ACME (Let's Encrypt, ou le point ACME de votre autorité) ou par les certificats gérés de votre hébergeur.
Par quoi commencer
Urgent : certificat expiré ou non reconnu, nom qui ne correspond pas, ou expiration dans quelques jours. Vos visiteurs voient déjà une alerte, ou vont la voir.
Important : TLS 1.0 ou 1.1 encore accepté, ou suites de chiffrement faibles. Aucune alerte n'apparaît, mais la connexion est moins solide qu'elle ne devrait.
Hygiène : automatisez le renouvellement, puis ajoutez HSTS pour que les navigateurs n'essaient plus jamais le HTTP en clair (voir en-têtes de sécurité HTTP) et limitez qui peut émettre vos certificats (voir CAA et Certificate Transparency).
Vérifiez votre domaine sur mlab.sh
Un scan de domaine mène une négociation TLS avec votre site et indique le protocole et la suite négociés, si le certificat est reconnu, s'il correspond à votre nom et combien de temps il lui reste.
Scanner votre domaine sur mlab.sh4 Red Flags
Certificat expiré ou sur le point de l'être
Les navigateurs bloquent le site avec une alerte pleine page. Si le renouvellement est automatisé, un certificat aussi proche de la fin signifie que l'automatisation est cassée.
Certificat auto-signé ou chaîne non reconnue
Vos visiteurs ne peuvent pas distinguer votre serveur de celui d'un attaquant. Les habituer à cliquer sur « continuer quand même » est pire que l'alerte elle-même.
Nom d'hôte qui ne correspond pas
Souvent un www oublié, le domaine nu oublié, ou le certificat par défaut de l'hébergeur. Faites réémettre avec tous les noms que vous servez.
TLS 1.0 ou 1.1 négocié
Si le scanner lui-même s'est retrouvé sur une vieille version, c'est que votre serveur la préfère ou ne propose qu'elle. Mettez ssl_protocols TLSv1.2 TLSv1.3; ou l'équivalent sur votre CDN.
Suite sans ECDHE, ou avec RC4 ou 3DES
Le signe d'une configuration copiée il y a des années et jamais revue. Remplacez-la par un profil Mozilla actuel plutôt que de la corriger ligne par ligne.
Modules connexes
Certificats, CAA et Certificate Transparency
Qui peut émettre des certificats pour votre domaine, ce que révèlent les journaux publics, et pourquoi les certificats partagés comptent.
Les en-têtes de sécurité HTTP
HSTS, CSP, X-Frame-Options, attributs de cookies : ce que bloque chaque en-tête, ce que signifie son absence dans un scan, et une configuration de départ sûre.
Les vulnérabilités connues de votre site
Comment un scan relie une version logicielle à des CVE, ce que signifient CVSS, EPSS et KEV, et comment prioriser les correctifs.
Source : mlab Academy — Plateforme de sensibilisation à la cybersécurité
URL : https://academy.mlab.sh/fr-FR/page/configuration-tls
Module : Comprendre la configuration TLS — Sécuriser son domaine
Avertissement : Ce contenu est à des fins de sensibilisation uniquement.