QSslSocket-Fehler, wenn SSL NICHT verwendet wird

8

Ich habe diese Ausgabe in zwei meiner Qt-Anwendungen bemerkt, die QNetworkRequest verwenden, um Daten von außerhalb über QNeworkRequest zu laden:

%Vor%

Ein Beispiel für die Anforderung, die zum Anzeigen dieser Warnungen führt, ist

%Vor%

Ich bin mir ziemlich sicher, dass in keiner der Abfragen TLS / SSL enthalten ist, alle sind einfach HTTP. Die Nachrichten werden immer angezeigt, nachdem die erste Anforderung unabhängig von der URL ausgelöst wurde. Ich habe keinerlei Absicht, SSL zu umgehen, SSL wird im Code nicht erwähnt , was bedeutet, dass ich die Warnungen nicht programmatisch ignorieren kann.

Mein Setup ist Windows 7 64 Bit, MSVC2013 und MinGW, Qt 5.3.2. Die Nachrichten werden unabhängig vom verwendeten Compiler angezeigt. Es sind keine OpenSSL- oder andere SSL-Entwicklungsbibliotheken installiert.

Und die Frage ist: Wie werde ich diese Warnungen los?

    
Pavel 14.10.2014, 12:44
quelle

4 Antworten

15

Dies sind nur die Aufrufe von qWarning (), wenn OpenSSL-Funktionen aufgelöst werden. Es versucht nicht, diese Funktionen aufzurufen, sondern sie nur zu lösen. Wenn Sie nicht aufgelöste Funktionen aufrufen, erhalten Sie stattdessen QSslSocket: cannot call unresolved function ... warning.

Die Warnung ist das Ergebnis von OpenSSL-Funktionen, die zur Laufzeit durch einen Aufruf von QSslSocket::supportsSsl() static in QNetworkAccessManager::supportedSchemesImplementation() aufgelöst werden, der unterstützte Schemata --- http zurückgibt und, wenn SSL https unterstützt.

Sie haben einige Optionen für diese Warnungen,

  1. ignoriere sie, weil du sowieso kein SSL willst oder brauchst
  2. kompiliere Qt mit -no-openssl , das an configure übergeben wurde
  3. ship OpenSSL, damit die Funktionen aufgelöst werden und https verfügbar wird - wahrscheinlich nicht das, was Sie wollen
user3427419 14.10.2014, 21:17
quelle
4

Wir hatten gelegentlich Kunden, die sehr ähnliche Warnmeldungen erhielten, aber die Software stürzte ebenfalls ab.

%Vor%

Wir haben festgestellt, dass es darauf zurückzuführen ist, dass das Programm, obwohl wir nicht SSL verwendet haben, eine Kopie von OpenSSL auf dem Computer des Kunden gefunden und versucht hat, damit zu kommunizieren. Die Version, die gefunden wurde, war jedoch zu alt ( ab Qt 5.2 v1.0.0 oder höher ist erforderlich) ).

Unsere Lösung bestand darin, die OpenSSL-DLLs zusammen mit unserer Anwendung zu verteilen (~ 1,65 MB). Die Alternative besteht darin, Qt von Grund auf ohne OpenSSL-Unterstützung zu kompilieren.

    
mjk99 07.07.2015 18:55
quelle
4

Kann verwandte Warnmeldungen mit QLoggingCategory::setFilterRules("qt.network.ssl.w arning=false");

deaktiviert werden     
jeton 01.10.2016 03:14
quelle
1

Haben Sie QSslSocket :: ignoreSslErrors ausprobiert?

    
Iuliu 14.10.2014 12:50
quelle

Tags und Links