Échec de la négociation TLS dans PCAP : ClientHello, ServerHello, certificat, alerte et réinitialisation des preuves

Comment diagnostiquer les échecs de négociation TLS dans les captures de paquets en lisant ClientHello, ServerHello, le certificat, l'alerte et les preuves de réinitialisation TCP.

PCAP, TLS, SSL, poignée de main, ClientHello

Les échecs de négociation TLS sont souvent signalés sous la forme d'une « erreur SSL », d'un « problème de certificat », d'un « échec de la négociation » ou d'une « réinitialisation de la connexion ». Ces messages sont utiles, mais un PCAP peut montrer où la poignée de main s'est arrêtée. Cet emplacement compte.

Un échec TLS avant ServerHello est différent d'une alerte de validation de certificat. Une réinitialisation TCP après « ClientHello » est différente d'une alerte TLS fatale après un échange de certificat. La chronologie de capture de paquets peut identifier la limite.

Commencez par la connexion TCP

Avant de déboguer TLS, confirmez TCP :

  • SYN
  • SYN/ACK
  • ACK
  • données du client

Si TCP ne s’établit jamais, il ne s’agit pas d’un échec de négociation TLS. Il s'agit du routage, du pare-feu, du port, de l'accessibilité du serveur ou de la politique TCP.

Si TCP s'établit et que le client envoie « ClientHello », TLS démarre.

ClientHello montre ce que le client a proposé

ClientHello peut révéler :

  • Versions TLS prises en charge
  • suites de chiffrement proposées
  • Nom d'hôte SNI
  • Protocoles ALPN
  • groupes pris en charge
  • algorithmes de signature

Si SNI est manquant, le serveur peut renvoyer un certificat par défaut ou rejeter la négociation. Si le client ne propose que d'anciens protocoles ou chiffrements, le serveur peut répondre par un échec de négociation ou une réinitialisation.

C'est pourquoi les captures sont utiles pour les anciens clients intégrés, les proxys et les intégrations personnalisées.

ServerHello ou No ServerHello

Si le client envoie « ClientHello » et qu'aucun « ServerHello » n'arrive, inspectez :

  • dépôt de pare-feu ou de middlebox
  • la politique du serveur se ferme silencieusement
  • Problème de MTU/chemin autour des messages de prise de contact volumineux
  • TCP réinitialisé depuis le serveur
  • comportement de l'équilibreur de charge

Si ServerHello arrive, inspectez la version et le chiffrement choisis. Le choix du serveur peut expliquer un échec ultérieur.

Les alertes sont des preuves, pas du bruit

Les alertes TLS peuvent être très informatives :

  • autorité de certification inconnue
  • mauvais certificat
  • échec de la poignée de main
  • version du protocole
  • paramètre illégal
  • fermer notifier

Une alerte fatale du client après la livraison du certificat indique souvent une chaîne de confiance, une incompatibilité de nom d'hôte, un certificat expiré ou des propriétés de certificat non prises en charge. Une alerte fatale du serveur après « ClientHello » peut pointer vers un chiffrement, un protocole, un SNI, un certificat client ou une politique.

Ne supprimez pas les alertes lors du découpage d’une capture.

La place de la chirurgie PCAP

PCAP Surgery devrait aider les ingénieurs à isoler la conversation TLS et à préserver les preuves de poignée de main. Une capture dérivée utile pour la prise en charge de TLS comprend :

  • Prise de contact TCP
  • ClientHello
  • ServeurBonjour si présent
  • messages de certificat si présents
  • Alertes TLS
  • TCP réinitialise
  • timing entre les messages

Si la capture doit être désinfectée, soyez prudent. La suppression des détails du certificat, du SNI ou des longueurs de charge utile peut également supprimer la raison de l'échec. La décision de désinfection doit correspondre à l’objectif de dépannage.

Pour les requêtes de recherche telles que « Échec de la négociation TLS pcap », « ClientHello no ServerHello » ou « Alerte SSL inconnue CA Wireshark », la réponse se trouve dans la limite de la négociation. Un bon flux de travail de chirurgie par paquets préserve cette limite au lieu de la cacher.