IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau Discussion :

Erreur pour utiliser QSslSocket


Sujet :

Réseau

  1. #1
    Membre du Club Avatar de sebmag
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Novembre 2009
    Messages : 52
    Points : 49
    Points
    49
    Par défaut Erreur pour utiliser QSslSocket
    Bonjour à tous,

    Voilà plusieurs jours que je me casse la tête à essayer de faire fonctionner mon client smtp.
    Malgré plusieurs recherches, je n'arrive pas à comprendre ce qui ne fonctionne pas avec OpenSSL.

    J'ai installé OpenSSL dans le dossier suivant : C:\OpenSSL-Win32 et je possède la version 5.7 de Qt.
    J'ai donc ajouter la librairie d'OpenSSL dans mon .pro comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    win32:CONFIG(release, debug|release): LIBS += -LC:/OpenSSL-Win32/lib/ -llibssl
    else:win32:CONFIG(debug, debug|release): LIBS += -LC:/OpenSSL-Win32/lib/ -llibssld
     
    INCLUDEPATH += C:/OpenSSL-Win32/include
    DEPENDPATH += C:/OpenSSL-Win32/include
    Mon client smtp permet les connexions STARTTLS. Donc dans mon fichier .h j'ai inclus cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include <openssl/tls1.h>
    Jusque là, tout compile comme il faut, sauf que lorsque j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    QSslSocket::supportsSsl();
    Ca me retourne un beau false !!! Donc, lorsque je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    socketSsl.startClientEncryption();
    sachant que socketSsl est un QSslSocket, la sortie de l'application me retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Connected : "220 BLU437-SMTP104.smtp.hotmail.com Microsoft ESMTP MAIL Service, Version: 8.0.9200.16384 ready at  Sat, 25 Feb 2017 05:41:35 -0800 \r\n"
    EHLO : "250-BLU437-SMTP104.smtp.hotmail.com Hello [78.214.166.30]\r\n250-TURN\r\n250-SIZE 41943040\r\n250-ETRN\r\n250-PIPELINING\r\n250-DSN\r\n250-ENHANCEDSTATUSCODES\r\n250-8bitmime\r\n250-BINARYMIME\r\n250-CHUNKING\r\n250-VRFY\r\n250-TLS\r\n250-STARTTLS\r\n250 OK\r\n"
    STARTTLS : "220 2.0.0 SMTP server ready\r\n"
    qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
    qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new
    qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
    qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
    qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
    Erreur : "L'opération réseau est expirée"
    Est-ce que vous auriez une idée ? Merci d'avance.

  2. #2
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    Bonjour,je ne sais pas si tu utilises visual studio ou mingw-w64 mais il faut mettre -lssl -lcrypto (avec mingw-w64) donc il faut que tu rajoutes -lcrypto.....

  3. #3
    Membre du Club Avatar de sebmag
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Novembre 2009
    Messages : 52
    Points : 49
    Points
    49
    Par défaut
    Bonjour Stéphane,

    J'utilise mingw32 ! J'ai déjà essayé aussi mais ça ne fonctionne pas mieux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    win32:CONFIG(release, debug|release): LIBS += -LC:/OpenSSL-Win32/lib/ -llibssl -llibcrypto
    else:win32:CONFIG(debug, debug|release): LIBS += -LC:/OpenSSL-Win32/lib/ -llibssld -llibcrypto
     
    INCLUDEPATH += C:/OpenSSL-Win32/include
    DEPENDPATH += C:/OpenSSL-Win32/include
    J'ai aussi inclus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <openssl/crypto.h>
    C'est toujours pareil !

  4. #4
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    rebonjour, alors si tu utilises mingw je pense que tes fichiers de librairies openssl sont comme moi libcrypto.a et libssl.a donc il faut mettre -lssl -lcrypto et non pas -llibssl -llibcrypto.(peut etre -lssld -lcryptod pour la version debug)

  5. #5
    Membre du Club Avatar de sebmag
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Novembre 2009
    Messages : 52
    Points : 49
    Points
    49
    Par défaut
    En fait, mes librairies openssl sont dans C:\OpenSSL-Win32\lib\MinGW et sont nommées : libssl-1_1.a et libcrypto-1_1.a !

    Je viens d'essayé avec -lssl et -lcrypto et le compilateur ne trouve plus les librairies. Un vrai casse tête

    Pour info voici le contenu de C:\OpenSSL-Win32\lib :
    Nom : Sans titre-1.png
Affichages : 611
Taille : 21,0 Ko

  6. #6
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    tu as la version 1.1.0 d'openssl et cela ne fonctionne pas pour le moment avec Qt.il faut utiliser une version 1.0.2 d'openssl.(a partir de la 1.0.2g pour Qt 5.7) openssl ca se compile bien avec mingw et mingw-w64.il faut utiliser msys2 pour cela.il y a juste un probleme de bug de make dans les versions plus ou moins recente de mingw et il faut appliquer une commande apres le ./Configure et avant de faire le mingw32-make (cf https://github.com/openssl/openssl/issues/256, executer la ligne de commande à la fin avec "find ./....."

  7. #7
    Membre du Club Avatar de sebmag
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Novembre 2009
    Messages : 52
    Points : 49
    Points
    49
    Par défaut
    Super ! Tout fonctionne parfaitement. Merci pour cette aide précieuse.

    Mon nouveau .pro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    win32:CONFIG(release, debug|release): LIBS += -LC:/OpenSSL-Win32/lib/ -lssl -lcrypto
    else:win32:CONFIG(debug, debug|release): LIBS += -LC:/OpenSSL-Win32/lib/ -lssld -lcryptod
     
    INCLUDEPATH += C:/OpenSSL-Win32/include
    DEPENDPATH += C:/OpenSSL-Win32/include

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Erreur d'utilisation de l'instruction Find pour une date
    Par fenrys_1 dans le forum Excel
    Réponses: 7
    Dernier message: 27/02/2017, 12h42
  2. Erreur à l'utilisation de PERL pour Solaris (perl: warning: Setting locale failed.)
    Par arnaudperfect dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 13/10/2010, 17h08
  3. [DOM] Erreur pour valider une DTD
    Par lenghh dans le forum Format d'échange (XML, JSON...)
    Réponses: 13
    Dernier message: 19/05/2004, 18h15
  4. [Debutant] probleme pour utiliser les classes d'un .jar
    Par pissek dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 12/05/2004, 18h21
  5. VCL de Crystal Report pour utilisation dans C++Builder
    Par dibak dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/02/2004, 17h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo