Partage
  • Partager sur Facebook
  • Partager sur Twitter

Qt, Windows et SSL

Sujet résolu
4 avril 2020 à 18:09:47

Bonjour à toutes et à tous !

J'ai créé un programme qui va récupérer un fichier xml (du moins son contenu) sur un site "https://...", donc sécurisé en SSL.

Ce programme, cette connexion et cette lecture se font SANS problème sous Linux. Mais ce matin, je l'ai testé sous Windows, et là... Qt ne sais pas lire le fichier xml car il me sort l'erreur "tls authentication failed"...

[edit] c'est pas ça : "tls authentication failed", en fait, c'est ça :

qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed
error :  "TLS initialization failed"

[/edit]

Quelqu'un saurait-il comment faire pour autoriser cette connexion TLS/SSL (en utilisant des certificats j'imagine) ? Parce que j'ai googlé, cherché, arraché des cheveux de ma tête, re googlé, mais rien, soit je suis totalement con (c'est pas improbable !), soit c'est pas clair...

Bref, merci d'avance de votre aide !

-
Edité par kevADAM 4 avril 2020 à 21:24:42

  • Partager sur Facebook
  • Partager sur Twitter
4 avril 2020 à 20:34:20

As tu installe OpenSSL ? Verifie ce qu'affiche les versions de SSL :

qDebug()
    << QSslSocket::supportsSsl() // doit retourner true
    << QSslSocket::sslLibraryBuildVersionString() // la version utilise pour compiler Qt
    << QSslSocket::sslLibraryVersionString(); // la version disponible

Pour les details : https://stackoverflow.com/questions/47122578/qsslsocket-and-supportsssl-returns-false

  • Partager sur Facebook
  • Partager sur Twitter
4 avril 2020 à 20:47:56

Ah on, je n'ai spécialement installé OpenSSL...

Je regarde ça de ce pas !

[edit]

gbdivers, voici le retour que j'ai :

false "OpenSSL 1.1.1d  10 Sep 2019" ""

[/edit]

-
Edité par kevADAM 4 avril 2020 à 21:25:39

  • Partager sur Facebook
  • Partager sur Twitter
5 avril 2020 à 9:18:48

Tu peux le récupérer avec le maintenance tool.

Developer and designer tools -> OpenSSL 1.1.1d

  • Partager sur Facebook
  • Partager sur Twitter
5 avril 2020 à 13:39:01

Bonjour,

C'est fait, et j'ai toujours les mêmes retour que la commande proposée par gbdivers :/

  • Partager sur Facebook
  • Partager sur Twitter
6 avril 2020 à 21:51:12

Alors alors...

En cherchant encore et toujours, j'ai ajouté ça dans mon fichier .pro

INCLUDEPATH += C:/Qt/Tools/OpenSSL/Win_x86/include
LIBS += -LC:/Qt/Tools/OpenSSL/Win_x86/lib -llibssl
LIBS += -LC:/Qt/Tools/OpenSSL/Win_x86/lib -llibcrypto

Dans mon code, j'ai ça : (j'ai aussi ajouté un "#include <openssl/aes.h>")

QNetworkAccessManager manager;
QNetworkReply* reply = nullptr;
manager.connectToHostEncrypted("https://www.monsite.fr/file.xml");
reply = manager.get(QNetworkRequest(QUrl("https://www.monsite.fr/file.xml")));
QEventLoop loop__;
QObject::connect(reply, SIGNAL(finished()), &loop__, SLOT(quit()));
loop__.exec();

Et j'ai toujours l'erreur :

qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed

à la ligne

loop__.exec();


Je n'ai toujours pas compris comment me connecter au site :euh:



  • Partager sur Facebook
  • Partager sur Twitter
4 mai 2020 à 18:11:28

Pour info, j'ai juste copié les dll : libcrypto-1_1.dll et libssl-1_1.dll dans le dossier et ça se connecte tout seul ;)
  • Partager sur Facebook
  • Partager sur Twitter
18 août 2023 à 5:05:29

dans quel dossier as-tu copié les les fichiers.dll?
  • Partager sur Facebook
  • Partager sur Twitter
18 août 2023 à 21:55:38

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ici.

  • Partager sur Facebook
  • Partager sur Twitter