J'ai un client python. En utilisant ssl.SSLContext()
( documentation ici ) et set_ciphers(myciphers)
(où myciphers est la liste des suites de chiffrement que je modifie à chaque poignée de main, c’est-à-dire à chaque connexion par socket). Je peux contrôler la liste des suites de chiffrement du client. Le défaut SSLContext
en python, désactivez SSL 2.0 et SSL 3.0 par défaut et je ne modifie en rien les versions dans le code de mon client.
J'envoie 3 poignées de main au site Web en utilisant une liste de suites de cryptage différente dans chacune. Je ne change pas la version.
Dans Wireshark, le ClientHello dans la colonne "protocole", je vois différentes versions? Je contacte le même site. Le client ne change pas la version.
1) Pouvez-vous m'expliquer pourquoi je vois une version différente du protocole TLS? 2) Si ce n'est pas la version réelle proposée par le client (qui devrait être TLS 1.2), où puis-je obtenir la version TLS proposée par le client?
Voici une capture d'écran à clarifier (veuillez excuser sa forme mais pour anonymiser les sites et les noms de PC):
MODIFIER: Bien que la colonne ClientHello affiche TLSv1, lorsque je clique sur l’enregistrement et que je vois la zone développée. Je vois ça:
> Secure Socket Layer
> TLSv1.2 Record Layer: Handshake Protocol: Client Hello
Je suis confus. Il est très important pour moi de veiller à ce que mon client utilise toujours TLS 1.2. J'ai laissé le défaut du python qui devrait le faire selon sa documentation.
EDIT 2: Je vois le filtre pour voir TLS 1.0 (comme le montre l’écran, ClientHellos envoie TLSv1). Mais avec ce filtre de vue:
ssl.handshake.version==0x0301
Non ClientHell
o les messages m'apparaissent. Seulement quelques ServerHello
. S'il te plait explique moi. C'est assez déroutant.