TLS 1.3 (RFC 9846 §2) ne demande qu’un aller-retour : le client envoie ClientHello avec les versions, suites de chiffrement, groupes et algorithmes de signature qu’il prend en charge, ainsi que ses key shares ; le serveur répond par ServerHello (sa key share), puis, déjà chiffrés, EncryptedExtensions, Certificate, CertificateVerify (une signature sur le condensat de la transcription) et Finished ; le client répond par son propre Finished et peut envoyer des données. Si le client a mal deviné le groupe, un HelloRetryRequest coûte un aller-retour supplémentaire.
TLS 1.2 demande deux allers-retours, envoie les certificats en clair et, avec le transport de clé RSA, ne signe aucune valeur éphémère. La reprise avec une clé pré-partagée se passe de l’authentification par certificat, et le 0-RTT permet au client d’envoyer des données anticipées (early data) au prix de la protection contre le rejeu.
Débogage : openssl s_client -connect host:443 -servername host -tls1_3 -msg affiche chaque message ; la plupart des échecs viennent de noms qui ne correspondent pas, de certificats intermédiaires manquants, de l’absence d’algorithme de chiffrement ou de groupe commun, ou d’équipements intermédiaires (middleboxes) qui perturbent les messages ClientHello volumineux (un problème de nouveau d’actualité avec les key shares post-quantiques de plus de 1 Ko).