Bibliothèque · Résumé et avis

TLS & HTTPS Explained

TLS & HTTPS Explained, de SkillZone. Ce que le cours vidéo apprend du cadenas, et où il se trompe.

FR EN
Couverture de TLS & HTTPS Explained, SkillZone

TLS & HTTPS Explained

TLS & HTTPS Explained - Visualizations and Localhost Setup in 2025

6.2 /10

« Un cours bavard comme un ami au café, concret quand il montre le vrai trafic réseau, faux par endroits dans ses résumés. »

  • AuteurSkillZone
  • VOPackt, 2025 · cours vidéo : 4 h 19, 43 leçons
  • LangueEn anglais uniquement
  • Fiche~18 min de lecture
  • Le lire Lire sur ExpertEdge Code : -50 % sur l'abonnement annuel. Lien affilié : je touche une commission si vous vous abonnez avec ce code. Mes notes n'en dépendent pas.
Notation du livre sur 5 dimensionsIdées6/10Applicable6/10Lisibilité6/10Actualité6/10Exemples7/10

Du clic au cadenas : les clés, le certificat (pièce d'identité du site) que le navigateur contrôle, et un HTTPS sur votre machine.

Pourquoi ce cours

Vous tapez une adresse en https://, un cadenas apparaît. Entre les deux, votre navigateur et le serveur ont ouvert une connexion TLS (Transport Layer Security), le protocole qui protège la connexion. HTTPS, c'est HTTP, le langage des pages web, enveloppé dans TLS : TLS rend illisibles les messages HTTP avant de les envoyer. On s'en sert tous les jours sans savoir ce qui s'y passe.

Ce cours répond en une phrase. TLS fait trois promesses : garder vos données secrètes, les protéger de toute modification et prouver l'identité du serveur. Chaque mécanisme sert à en tenir une.

Pour une fois, ce n'est pas un livre mais un cours en vidéo, en anglais. Le cours est publié par Packt, éditeur de livres et de cours techniques, et par SkillZone. Le professeur s'appelle Clyde. Le cours compte 43 leçons en trois parties, pour 4 h 19, sur ExpertEdge, le site d'abonnement de Packt. D'abord HTTP vu dans Wireshark, un logiciel qui capture les paquets, les morceaux de données qui circulent sur le réseau, et les montre. Puis la théorie de TLS, et enfin un HTTPS sur votre propre machine, fait à la main. Packt publie aussi, dans un dépôt public (un dossier de fichiers en ligne), sept notes écrites du cours.

Le cours ne traite qu'en passant deux sujets. L'authentification des clients : le serveur demande aussi au visiteur un certificat, un fichier qui prouve son identité. La révocation : annuler un certificat avant sa date de fin de validité.

Les idées qui restent

Pour situer les huit idées, imaginez que vous allez voir votre banque, en https, dans une salle pleine de monde. Chaque geste renvoie à l'idée qui l'explique. Les idées sont rangées par brique, des plus simples à la poignée de main qui les assemble. Ce trajet suit le temps, d'où des numéros dans le désordre.

  1. Avant votre arrivée, la banque a reçu d'une autorité de confiance un papier tamponné : « cette clé est bien celle de cette banque » (idée 3).
  2. Vous tirez un fil jusqu'à elle et vous vous dites bonjour à voix haute. Chacun n'y met que des choses sans danger (idée 5).
  3. Chacun fabrique chez soi le même secret, sans jamais l'envoyer, comme deux peintres qui échangent des mélanges (idée 2 et idée 5).
  4. Une cloison opaque se ferme : la salle ne voit plus passer que du bruit (idée 1).
  5. La banque montre son papier, et votre navigateur contrôle la date, le tampon et le nom (idée 4).
  6. Seulement alors, votre demande de page part, à l'abri.

Les idées 6 à 8 prolongent ce trajet. La idée 6 règle le choix de la clé d'échange face à l'ordinateur quantique. La idée 7 lit une capture chiffrée. La idée 8 refait le même montage sur votre machine.

Les huit idées forment trois familles :

1TLS n'empêche personne d'écouter, il rend l'écoute inutile

Le cours part d'un formulaire envoyé par un navigateur, avec l'identifiant « Wally » et le mot de passe « secret » (leçon 1). Wally Warthog est le pseudonyme du professeur (leçon 13). Le fil, c'est le réseau entre le navigateur et le serveur. Là, n'importe quelle machine de passage, un routeur ou un Wi-Fi par exemple, peut copier le formulaire. Clyde est direct. « TLS n'empêche personne d'intercepter les données, car une fois sur le fil, tout le monde peut se servir » (leçon 9).

TLS ne cache donc pas ce qui passe sur le fil. TLS fait trois promesses sur ce contenu (leçon 9) :

  • confidentialité : celui qui intercepte ne lit que du charabia.
  • intégrité : personne n'a modifié le message en route.
  • authenticité : vous parlez au serveur que vous vouliez joindre, pas à un pirate qui se fait passer pour lui.

Dans la suite, le pirate est celui qui écoute ou modifie ce qui passe sur le fil.

L'intégrité repose sur le hachage : le calcul d'une empreinte, un court résumé du message. Le message part avec son empreinte, et le destinataire la recalcule pour comparer (leçon 15). Changez une lettre, l'empreinte change entièrement (leçon 15). Mais « n'importe qui peut produire une empreinte » (leçon 15). Un pirate qui modifie le message envoie donc aussi une nouvelle empreinte, et le destinataire ne voit rien.

Pour déjouer le pirate, l'empreinte doit dépendre d'une valeur secrète que le pirate ignore. Sans elle, le pirate ne peut pas fabriquer l'empreinte qui convient (leçons 16 et 17). Une clé est une telle valeur secrète, une longue suite de chiffres. Elle a deux usages. Elle entre dans un calcul d'empreinte. Elle sert aussi à chiffrer, c'est-à-dire rendre un message illisible, et à déchiffrer, c'est-à-dire le rendre de nouveau lisible. Ce second usage tient la confidentialité.

2Une clé lente pour se mettre d'accord, une clé rapide pour parler

Reste un problème : comment le navigateur et un serveur inconnu se mettent-ils d'accord sur une clé, devant tout le réseau ? Le cours présente deux familles d'algorithmes de chiffrement, c'est-à-dire de méthodes de calcul, et TLS a besoin des deux (leçon 9) :

  • chiffrement symétrique : une seule clé chiffre et déchiffre. C'est rapide. Le cours cite AES (Advanced Encryption Standard) en exemple (leçon 7). Les deux côtés doivent pourtant déjà avoir la même clé.
  • chiffrement asymétrique : une paire de clés. La clé publique se donne à tous, et elle chiffre. La clé privée reste chez son propriétaire, et elle seule déchiffre. Ce chiffrement est « beaucoup plus lent que le chiffrement symétrique » (leçon 9).

Mon image, qui n'est pas du cours : le serveur distribue des cadenas ouverts, sa clé publique. N'importe qui peut en fermer un sur un colis, mais seul le serveur a la clé du cadenas, sa clé privée. Dans l'ancienne méthode, RSA, le navigateur s'en sert au début de la connexion pour lui envoyer un secret.

Un étal de marché : le serveur, un personnage souriant avec une clé dorée à une chaîne autour du cou, a posé sur son comptoir un panier de cadenas ouverts sous un panneau « free padlocks, take one » (cadenas gratuits, servez-vous). Un client en ferme un sur un colis pendant qu'une foule intriguée regarde
Le serveur distribue des cadenas ouverts : sa clé publique. N'importe qui en ferme un sur un colis, le message chiffré. La clé, sa clé privée, reste à son cou : la foule voit le colis fermé et ne peut pas l'ouvrir.

Des chiffres que le cours ne donne pas, mesurés par moi : sur un portable récent (processeur AMD, Go 1.26, médiane de 6 mesures), une opération de chaque famille. La colonne de droite est un calcul : 1 Mo découpé en blocs de 190 octets, la taille maximale que RSA-2048 accepte à la fois.

OpérationCe qu'elle traiteTemps par opérationPour 1 Mo
AES-256-GCM, chiffrer (famille rapide)1 Ko0,19 µs0,2 ms
RSA-2048, déchiffrer (famille lente)190 octets au plus0,74 msplus de 4 s
X25519 (Diffie-Hellman), s'accorder sur un secretaucune donnée33 µssans objet

Un échange de clés ne chiffre aucune donnée : il sert seulement à s'accorder sur le secret (idée 5). Pour les données, l'écart est d'environ 20 000 fois en faveur d'AES. TLS n'emploie donc la famille lente qu'une fois, au début.

TLS combine les deux. Au début, la famille lente sert à mettre les deux côtés d'accord sur un secret commun. Chaque côté en tire ensuite les mêmes clés rapides (leçon 12). Après, tout passe en symétrique (leçons 9 et 11). Ces clés rapides s'appellent les clés de session, car elles ne vivent que le temps d'une connexion (leçon 7).

Il y a plusieurs façons de s'accorder sur le secret commun (leçon 12). Le cours en montre deux : RSA, l'ancienne, et Diffie-Hellman, celle de TLS 1.3. L'idée 5 détaille les deux.

Chaque outil tient ainsi une promesse de l'idée 1. Le chiffrement symétrique tient la confidentialité de tout le trafic. Le hachage, avec un secret, tient l'intégrité. La signature, vue ensuite, tient l'authenticité.

3N'importe qui fabrique des clés, d'où l'autorité de certification

La paire asymétrique sait aussi signer. Pour signer, on inverse les rôles de la paire : la clé privée chiffre l'empreinte du texte, et ce résultat est la signature. Le texte voyage avec elle. Le destinataire déchiffre la signature avec la clé publique, ce qui redonne l'empreinte, et la compare à celle qu'il calcule lui-même (leçons 13 et 16). Seul le détenteur de la clé privée peut produire une signature qui concorde. Elle prouve donc deux choses : le texte n'a pas bougé, et il vient de ce détenteur. Ce n'est pas un secret, car tout le monde peut déchiffrer avec la clé publique, et c'est voulu.

Cette preuve bute pourtant sur un fait. Au début de la connexion, le serveur envoie sa clé publique au navigateur (leçon 12). Mais « n'importe qui peut générer des clés publiques et privées » (leçon 19). Un pirate sur le chemin peut envoyer la sienne en se faisant passer pour piggybank.com, la banque fictive. Le navigateur lui confierait alors ses secrets.

La parade est un tiers que le navigateur connaît déjà : l'autorité de certification (CA, certificate authority). Le serveur envoie à la CA une CSR (certificate signing request, demande de signature) avec sa clé publique et son domaine. La CA vérifie que le serveur contrôle ce domaine. Par exemple, elle lui fait déposer un fichier, puis elle vient le lire (leçon 20). Puis elle signe. Le résultat est le certificat : un fichier public qui dit « cette clé appartient à ce domaine », signé par la CA.

Ma lecture

Le cours ne cite pas Let's Encrypt, mais c'est l'exemple le plus courant de la CA de la figure : une CA gratuite et automatisée, tenue par une association à but non lucratif, l'ISRG (Internet Security Research Group). La preuve du fichier, à l'étape ③, s'appelle le défi HTTP-01 : le logiciel du serveur dépose un fichier sous /.well-known/acme-challenge/ et la CA vient le lire, par le port 80 uniquement (celui du HTTP sans chiffrement). L'autre défi courant, DNS-01, passe par un enregistrement dans la zone DNS du domaine. Ses certificats durent 90 jours : on les renouvelle donc automatiquement.

Un certificat Let's Encrypt n'est pas auto-signé : la CA le signe, comme à l'étape ④. Un certificat auto-signé qui ne figure pas dans le magasin chiffre aussi la connexion, mais il n'authentifie personne : un pirate peut en présenter un à son tour. Sources : letsencrypt.org, pages « How it works », « Challenge Types » et « FAQ ».

Le navigateur croit la CA parce que la clé publique de la CA est déjà chez vous. Système et navigateur arrivent avec une liste de CA de confiance, le magasin de confiance (leçon 21). Quelques CA ne peuvent pas gérer tous les certificats du monde. Elles délèguent donc à des intermédiaires, comme un PDG à ses managers (leçon 21). Le certificat d'un site est ainsi signé par un intermédiaire. Le certificat de l'intermédiaire est signé par une racine, une CA du sommet qui ne dépend d'aucune autre. Cette suite site, intermédiaire, racine s'appelle la chaîne de confiance.

Une racine signe son propre certificat : on dit qu'il est auto-signé. Elle n'est pas crue sur parole, car elle figure déjà dans le magasin de confiance de votre système. Sur le certificat de google.com, la racine « GTS Root R1 » s'est signée elle-même, et Windows l'a déjà (leçon 29). GTS signifie Google Trust Services (hors cours, à vérifier sur pki.goog).

Pour ne pas mélanger les deux moments, voici ce qui se passe avant toute visite, puis à chaque visite.

Avant, une seule fois (puis à chaque renouvellement du certificat) :

  • Le serveur fabrique sa paire de clés durable et prouve à la CA qu'il contrôle le domaine, comme dans la figure du début de l'idée.
  • La CA signe, avec sa clé privée, l'empreinte du certificat : le domaine et la clé publique du serveur. Cette signature est le certificat, que le serveur garde.
  • De son côté, le navigateur arrive avec les certificats des CA racines. Il n'a rien d'autre à télécharger.

À chaque visite :

  • Le navigateur fabrique une paire de clés propre à cette connexion. Elle ne sert qu'à calculer le secret commun (idée 5).
  • Le serveur lui envoie son certificat, avec ceux des intermédiaires.
  • Le navigateur remonte la chaîne : il vérifie chaque signature avec la clé publique du maillon au-dessus, jusqu'à une racine qu'il connaît déjà.
  • Seulement ensuite, la requête de la page part, chiffrée avec les clés de session.

4Le navigateur contrôle la date, la signature et le domaine

Le certificat arrive au début de la connexion, pendant la poignée de main (handshake), l'échange d'ouverture que l'idée 5 détaille. Que fait alors le navigateur ? Il fait trois contrôles :

  • la date du jour tombe dans la période de validité.
  • la signature vient d'une CA de confiance.
  • le domaine du certificat est celui du site demandé.

Un seul contrôle raté suffit à faire rejeter le certificat. Voici quel contrôle arrête quel cas :

Certificat présentéDateSignatureDomaineVerdict
Valide, délivré pour ce site✓✓✓accepté
Expiré✗✓✓rejeté
Faux piggybank.com fabriqué par un pirate✓✗✓rejeté
Vrai certificat, mais d'un autre site✓✓✗rejeté

La signature se contrôle en deux calculs (leçon 22). Le navigateur calcule l'empreinte du certificat. Puis il déchiffre la signature avec la clé publique de la CA, ce qui redonne l'empreinte calculée par la CA. Les deux doivent être égales.

Un certificat falsifié, comme un faux piggybank.com, échoue, car le pirate n'a pas la clé privée de la CA. La seule exception est le vol de cette clé. Clyde la reconnaît : c'est « arrivé par le passé », mais très rare (leçon 22).

Ma lecture

Hors cours, d'après la RFC 8446, §4.4.3. Une RFC (Request for Comments) est un texte de référence d'Internet, et la RFC 8446 définit TLS 1.3, la version actuelle de TLS. Le certificat est public, donc n'importe qui peut le renvoyer en se faisant passer pour le site. Le certificat seul ne prouve pas qu'on parle au vrai propriétaire. En TLS 1.3, le serveur prouve donc qu'il détient la clé privée en signant la poignée de main, dans un message nommé CertificateVerify. Le cours n'en parle pas.

5En TLS 1.3, tout est chiffré après les deux premiers messages

Avant le détail, le film d'une connexion, dans l'ordre. Pour se la représenter, imaginez deux personnes qui veulent se parler discrètement dans une salle pleine de monde. TLS s'ouvre avant HTTP et ne passe pas par lui.

  1. Le TCP, la façon dont deux machines ouvrent une ligne fiable entre elles, vient d'abord. C'est un tuyau brut, sans chiffrement et sans HTTP : tout ce qu'on y dit s'entend dans la salle.
  2. Les deux premiers messages TLS partent en clair, comme des cartes postales que tout le monde peut lire. On n'y met donc que des choses sans danger, des parties publiques.
  3. Chaque côté calcule le même secret chez lui, sans l'envoyer. C'est le jeu des peintres, un peu plus bas.
  4. Dès lors, tout est chiffré avec des clés tirées de ce secret. La conversation continue derrière une cloison opaque : la salle voit des gens parler et n'entend que du bruit.
  5. Les requêtes HTTP ne partent qu'à ce moment, à l'intérieur du tunnel chiffré. HTTPS, c'est du HTTP posé dans un tunnel TLS.

Il reste à voir dans quel ordre clés, signature et certificat se croisent pendant la poignée de main. En TLS 1.3, la version actuelle, elle commence par deux messages en clair, c'est-à-dire non chiffrés (leçons 23 et 24) :

  1. Le ClientHello, le « bonjour » du client. Le navigateur annonce ses versions de TLS, ses suites de chiffrement (les combinaisons de méthodes acceptées) et un nombre tiré au hasard. Ce nombre servira à fabriquer les clés de cette connexion (leçon 12). Il joint une clé publique d'échange, dans un champ nommé key_share.
  2. Le ServerHello, le « bonjour » du serveur. Le serveur choisit une suite et renvoie son propre nombre tiré au hasard et sa propre clé publique d'échange.

Avec ces deux clés publiques, chaque côté calcule le même secret commun sans l'envoyer. C'est l'algorithme de Diffie-Hellman. Chaque côté a fabriqué pour cette connexion sa propre paire de clés (leçon 26). Sa clé publique voyage dans le Hello, sa clé privée reste chez lui. Chacun mélange sa clé privée avec la clé publique de l'autre, et les deux tombent sur le même résultat.

Mon image, qui n'est pas du cours : deux peintres partent d'une même couleur publique. Chacun y mêle sa couleur secrète, sa clé privée, puis ils s'échangent leurs mélanges, leurs clés publiques. Chacun ajoute alors sa couleur secrète au mélange de l'autre. Les deux obtiennent la même teinte. Un pirate qui a vu les mélanges ne sait pas séparer les couleurs pour la refaire.

Ce secret commun joue le rôle annoncé à l'idée 2. Chaque côté en tire les mêmes clés de session, et tout ce qui suit le ServerHello est chiffré avec elles (leçons 12 et 26). Sur une capture de Wikipedia, Clyde constate : « à partir de là, tout est chiffré, on ne peut pas le lire » (leçon 24).

Le serveur envoie ensuite son certificat, qui passe déjà chiffré, à l'abri derrière la cloison. Le certificat étant public, n'importe qui peut le présenter : le serveur doit aussi prouver qu'il détient la clé privée. En TLS 1.3, hors cours, une signature s'en charge (voir l'encadré de l'idée 4). Chaque côté envoie enfin un message Finished (« terminé »), chiffré avec les clés de session qu'il vient de fabriquer. Si l'autre arrive à le lire, c'est que les deux côtés ont les mêmes clés (leçon 27). Puis les requêtes HTTP partent.

Avant TLS 1.3, la méthode de TLS 1.2 faisait autrement : Diffie-Hellman « remplace » RSA (Rivest-Shamir-Adleman) (leçons 12 et 24). Le client tire un secret commun au hasard, le chiffre avec la clé publique du serveur et l'envoie. C'est un colis fermé avec l'un des cadenas ouverts de l'idée 2. Seul le serveur l'ouvre, avec sa clé privée. Les deux côtés mêlent ensuite ce secret aux deux nombres tirés au hasard pour obtenir les clés de session (leçon 12). La preuve d'identité vient alors toute seule : un faux serveur ne sait pas ouvrir le colis, donc il ne peut pas continuer (leçon 27).

Ma lecture

Hors cours, d'après la RFC 8446, §2 et §4.4.4. En TLS 1.3, Finished est un HMAC (Hash-based Message Authentication Code, leçon 17). C'est une empreinte calculée avec une clé secrète, sur toute la poignée de main. Les deux côtés recalculent et comparent : si les deux empreintes concordent, personne n'a touché à l'échange.

Les captures du cours sur google.com viennent de HTTP/3, qui roule sur QUIC, bâti sur UDP, au lieu de TCP (deux façons d'envoyer des paquets). La poignée de main TLS y reste la même (leçons 7 et 23). Cela compte pour l'idée 7, où le HTML reste illisible.

Un détail déroute : le ClientHello affiche « TLS 1.2 ». C'est une concession aux vieux pare-feux, des filtres réseau qui renvoyaient des erreurs sans cette valeur. La vraie version est dans un champ complémentaire, l'extension supported_versions (leçon 24).

6Le navigateur propose deux clés d'échange, et la grosse résiste à l'ordinateur quantique

Le champ key_share de l'idée 5 portait jusque-là une clé de 32 octets, et il a grossi : voici pourquoi. Un ordinateur quantique assez puissant pourrait casser les échanges de clés d'aujourd'hui (leçons 25 et 26). Cette machine résout des calculs hors de portée des machines actuelles. Le NIST (National Institute of Standards and Technology), l'agence américaine des normes, a donc publié de nouveaux algorithmes. Clyde date cette publication : « le NIST n'a produit sa série finale de standards post-quantiques qu'en août 2024 » (leçon 26). L'adoption par les navigateurs reste floue : « difficile de dire quand, fin 2023 ou quelque part en 2024 » (leçon 26).

Les navigateurs ne misent pas tout sur la méthode neuve : ils portent ceinture et bretelles. Ils proposent un échange hybride, qui empile deux méthodes. X25519 est le Diffie-Hellman de l'idée 5, les deux peintres, calculé sur une courbe elliptique, une courbe mathématique qui permet des clés courtes. Elle a fait ses preuves, mais un ordinateur quantique pourrait la casser. ML-KEM est la méthode post-quantique du NIST, beaucoup plus récente. Empiler les deux rend l'échange très dur à casser (leçon 26). Hors cours, d'après le brouillon de l'IETF cité plus bas (§2.1) : il reste sûr tant qu'une des deux méthodes tient.

ML-KEM ne marche pas comme les peintres. KEM veut dire Key Encapsulation Mechanism, mécanisme d'encapsulation de clé : c'est un colis. Le client envoie un cadenas ouvert, sa clé publique ML-KEM. Le serveur invente un secret, l'enferme dans un colis fermé avec ce cadenas et le renvoie. Seul le client a la clé, donc seul lui l'ouvre.

Le client annonce les méthodes qu'il connaît dans l'extension supported_groups. Chaque méthode a un numéro de groupe. Le groupe 4588 désigne la combinaison X25519 plus ML-KEM (leçon 26). Dans le ClientHello de google.com, Wireshark montre deux key_share. Le premier fait 1216 octets : c'est l'hybride, les deux clés mises bout à bout (leçons 24 et 26). Le second, de 32 octets, est un X25519 seul, en secours si le serveur ignore l'hybride. Google prend l'hybride, donc « la seconde clé n'est pas utilisée par le serveur » (leçon 26).

Le serveur fabrique alors le secret commun en deux parts (leçon 26). Pour la première, il crée sa paire X25519 et la combine avec la partie X25519 du client, comme à l'idée 5. Pour la seconde, il applique l'encapsulation à la clé publique ML-KEM du client. Il enferme un secret dans un colis : cela produit la seconde part et un bloc chiffré. Il renvoie sa clé publique X25519 et ce bloc, dans son key_share. Le client refait la première part, ouvre le bloc avec sa clé privée ML-KEM et obtient la seconde. Les deux côtés ont alors les mêmes deux parts, qui forment ensemble le secret commun. Le cours ne dit pas comment elles s'unissent.

Ma lecture

Hors cours, d'après le brouillon draft-ietf-tls-ecdhe-mlkem-05 de l'IETF, l'organisme qui rédige les standards d'Internet, et la documentation de crypto/tls. Le groupe 4588 s'appelle X25519MLKEM768, et « 768 » désigne la variante ML-KEM-768. Ses 1216 octets font 1184 pour ML-KEM puis 32 pour X25519. Le cours place X25519 en premier (leçon 26), le brouillon dit l'inverse. Le secret commun est les deux parts mises bout à bout, ML-KEM d'abord, soit 64 octets (§4.3). En Go, crypto/tls active cet échange par défaut depuis Go 1.24, tant que Config.CurvePreferences reste vide.

7Une variable d'environnement donne à Wireshark les clés pour lire la capture

Ces 1216 octets, Clyde les lit dans Wireshark. Ce logiciel est gratuit (leçon 2). Il capture les paquets qui passent par votre carte réseau. En HTTPS, il ne voit que du charabia après le ServerHello : des coffres fermés qui défilent. Le navigateur, lui, garde en mémoire les clés de session, les clés de ces coffres. L'astuce : lui demander de les écrire dans un fichier (leçon 7). C'est la photocopie des clés qu'on confie à Wireshark.

On crée d'abord une variable d'environnement SSLKEYLOGFILE, un réglage nommé que les programmes lisent au démarrage et qui désigne ici un fichier texte. SSL est l'ancien nom de TLS, resté dans le nom (leçon 24). Clyde insiste sur l'orthographe : « Il faut l'écrire exactement comme ça » (leçon 7). On indique ensuite ce fichier dans les préférences de Wireshark (Edit, Preferences, Protocols, TLS).

Premier essai : Clyde a oublié de redémarrer le navigateur, et le fichier reste vide. Clyde ferme le navigateur, le rouvre et retourne sur google.com : cette fois, les clés s'écrivent (leçon 7). La capture montre alors le « 200 OK » et les en-têtes en clair. Le HTML, lui, reste illisible : sur HTTP/3, les données restent chiffrées malgré le fichier de clés, ce qui intrigue Clyde (leçon 7).

# exemple imaginé, pas du cours (qui le fait sous Windows)
export SSLKEYLOGFILE="$HOME/tls-keys.log"
firefox &    # lancé après la variable, sinon le fichier reste vide

Clyde prévient : « c'est assez dangereux si quelqu'un met la main sur ces clés de session » (leçon 27). Avec le fichier et une capture, on rouvre tous les coffres, y compris ceux d'hier : on relit les conversations passées. Mon conseil, qui n'est pas du cours : retirez la variable après usage.

Ma lecture

Hors cours, d'après la documentation de crypto/tls. En Go, le champ KeyLogWriter de tls.Config écrit le même fichier. La documentation le réserve au débogage, car il compromet la sécurité.

8En local, vous devenez votre propre autorité de certification

La dernière partie du cours monte un HTTPS sur votre propre machine, nommée localhost, et Wireshark en prouve le résultat. Imaginez que vous créez votre propre autorité, la CA : elle vous remet un papier tamponné pour votre machine, et vous dites à votre ordinateur de croire cette autorité. Aucune CA publique ne signera pour localhost. Une CA vérifie que vous contrôlez le domaine, comme à l'idée 3, et personne d'autre ne voit votre machine (leçon 21). Tant que votre CA maison n'est pas dans le magasin de confiance, Chrome affiche « Votre connexion n'est pas privée » (leçon 32). Le cours refait donc la chaîne de confiance de l'idée 3 en miniature, avec XCA, un logiciel libre (leçons 29 à 32) :

  1. Créer la CA « Wally Warthog Root CA » : clé RSA de 2048 bits, certificat de dix ans signé par elle-même (leçon 30).
  2. Créer la clé et la CSR du serveur pour localhost. Le champ SAN (subject alternative name, les noms et adresses couverts) reçoit localhost et 127.0.0.1 (leçon 31).
  3. Signer la CSR avec la CA, pour 365 jours (leçon 31).
  4. Donner le certificat et la clé privée à Live Server, une extension de VS Code, sur le port 4430 (leçon 32). Ce port est 443, le port HTTPS habituel, avec un zéro ajouté pour l'essai en local.
  5. Importer le certificat de la CA dans le magasin de confiance de Windows : votre ordinateur croit maintenant cette autorité, et l'avertissement disparaît (leçon 32).

Wireshark confirme : TLS 1.3 et un certificat de 1013 octets, visible grâce au fichier de clés, émis par « Wally Warthog Root CA ». Le HTML est lisible une fois déchiffré (leçon 33). Les valeurs 2048 bits, dix ans et 365 jours sont des choix pour un essai local. Le cours refait ensuite la recette avec OpenSSL, puis avec Node et le paquet npm mkcert. OpenSSL est une boîte à outils en ligne de commande.

Ma lecture

Hors cours, à vérifier. Une CA racine maison peut signer pour n'importe quel domaine, et votre machine la croira. Gardez sa clé privée hors de tout dépôt de code. L'outil mkcert de Filippo Valsorda, distinct du paquet npm, fait les étapes 1, 2, 3 et 5 en deux commandes. D'abord mkcert -install, puis mkcert localhost 127.0.0.1. L'étape 4 reste manuelle. Le cours insiste d'abord sur le « common name », le nom principal du certificat (leçon 30). Puis XCA le copie dans le SAN (leçon 31). Or Chrome ne lit plus que le SAN depuis 2017 : le nom principal seul ne suffirait plus.

Mon avis, honnêtement

Peut-on comprendre ce qui se passe entre le clic et le cadenas ? Oui, et c'est le meilleur de ce cours. Clyde ouvre de vrais paquets : le ClientHello de Google, la clé de 1216 octets, le certificat lu avec le seul fichier de clés. On voit TLS au lieu de le croire.

Il vous appelle « mon cher élève » dix-huit fois et promet de faire de vous un « grand maître » du HTTPS. On en sort bon élève, avec deux réserves. Le cours date par endroits de TLS 1.2 : la leçon 27, fondée sur RSA, est à prendre pour de l'histoire. Et il survole l'authentification du client (leçon 28) et la révocation d'un certificat volé (leçon 30).

Mon conseil : la théorie sans la leçon 27, puis la leçon 7 et les leçons 29 à 33. Le reste ne sert que si vous codez en Node sous Windows.

Odilon

Toujours valable en 2026 ?

Les trois promesses, les deux familles de clés, le rôle des CA et le principe de l'échange hybride restent justes. Un passage est à corriger, et deux points sont à nuancer ou à ajouter :

À qui s'adresse-t-il ?

Lisez-le si

  • vous utilisez HTTPS tous les jours sans savoir ce que vérifie le cadenas.
  • vous voulez lire un ClientHello dans Wireshark.
  • vous voulez un HTTPS local sans avertissement, sous Windows, avec VS Code ou Node.
  • vous voulez situer TLS 1.3 et l'échange post-quantique avant un entretien.

Passez si

  • vous devez mettre en place l'authentification des clients (mTLS, TLS mutuel) ou la révocation.
  • vous lisez déjà la RFC 8446 sans effort.
  • vous ne supportez pas un professeur qui dit tout trois fois.
Le lire sur ExpertEdge

Ce cours vidéo fait partie d'ExpertEdge, l'abonnement de Packt aux livres et cours vidéo techniques. Le code ODILON50 donne 50 % de remise sur l'abonnement annuel : le cours sur ExpertEdge. Lien affilié : je touche une commission si vous vous abonnez avec ce code, et mes notes n'en dépendent pas.

Pour aller plus loin

Fiche fondée sur : cours vidéo de 4 h 19 en 43 leçons, hors encadrés « Ma lecture », qui sont de moi. Source : leçons 7, 9, 11 à 13, 15 à 17, 19 à 33 lues en détail. Les sept notes du dépôt sont lues aussi, avec les passages cités des leçons 1 et 2 vérifiés.

Commentaires (0)

Voir toute la bibliothèque

D'autres fiches arrivent : un livre à la fois, la substantifique moelle seulement.