Bonjour,

Je travaille actuellement sur un projet développé sur une ancienne version de Qt (4.7) et qui nécessite l'utilisation des protocoles sécurisés (SSL/TLS).
Pour cela on utilise la bibliothèque OpenSSL (dans une ancienne version également, 0.9.8g).
Ce projet a été développé sur une ancienne distribution Linux Debian (Lenny) et il s'agit d'une application embarquée (et non pas sur PC).

Dans ce projet, il y a un thread qui est lancé en parallèle du thread principal dans un seul cas précis.
L'objectif est de n'utiliser que le protocole sécurisé TLSv1 (le mieux qui puisse être fait avec cette version de bibliothèque OpenSSL).


Je suis confronté au problème suivant : le seul cas pour lequel un paquet Client Hello SSLv2 est envoyé (au lieu d'un paquet TLSv1) est lorsque ce second thread est lancé.
Il s'agit donc du premier paquet émis par le client vers le serveur pour la négociation (handshake).
Après quoi, tous le reste des échanges est bien réalisé en utilisant le protocole TLSv1.



Côté configuration d'OpenSSL, j'ai fait les modifications pour imposer la non utilisation des protocoles SSLv2 et SSLv3 (et même imposer l'utilisation du protocole TLSv1).
Côté code applicatif, là encore la configuration impose l'utilisation du protocole TLSv1.

A priori tout devrait fonctionner de telle manière qu'aucun paquet SSLv2 ne soit transmis.
C'est bien le cas, hormis pour le cas du multithreading.


Je n'arrive malheureusement pas à résoudre ce problème, j'ai sans doute oublié de faire quelque chose mais je n'arrive pas à mettre le doigt dessus.

Quelqu'un aurait-il la bonne méthode pour que ce premier paquet Client Hello soit bel et bien envoyé avec le protocole TLSv1 et non pas SSLv2 ?


Merci d'avance !