Ich versuche, eine Ruheanforderung an einen Webservice zu senden, wo das Zertifikat selbstsigniert ist. Im Moment erstelle ich eine Anfrage, setze die URL und die Auth. Schlüssel als Kopfzeilen. Dann sage ich die Antwort dieses ssl Fehler zu ignorieren:QSslError: Das Zertifikat ist selbstsigniert und nicht vertrauenswürdig
QSslError error(QSslError::SelfSignedCertificate);
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(error);
QNetworkReply *reply = _accessManager.put(request, ""); // no requestbody
reply->ignoreSslErrors(expectedSslErrors);
Wenn ich es laufen bekomme ich folgende ssl Fehler:
9 - The certificate is self-signed, and untrusted
gefolgt von Netzwerkfehler nr 6:
Request failed with message: SSL handshake failed
Im Moment ignoriere ich ALLE Fehler, da es das einzige zu sein scheint, was funktioniert. Fühle dich schmutzig.
Wäre wirklich dankbar, wenn jemand weiß, was ich falsch mache!
EDIT:
geändert:
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(QSslError::SelfSignedCertificate);
expectedSslErrors.append(QSslError::CertificateUntrusted);
reply->ignoreSslErrors(expectedSslErrors);
aber immer noch die gleichen Fehler ...
was meinst du mit der Bereitstellung des Cert? Es ist eine Base64-codierte Zeichenfolge, die Teil der Auth ist. Header. nicht sicher, wie man das als ein Zertifikat zur Verfügung stellt – chikuba
@chikuba Was Sie beschreiben, sieht eher wie die Basis-Authentifizierung, kein Zertifikat. Das Dokument zeigt, wie Sie das Zertifikat an 'QSslError' aus einer Datei übergeben können, [hier] (http://qt-project.org/doc/qt-4.8/qnetworkreply.html#ignoreSslErrors-2), und um das zu bekommen Datei, gehen Sie mit Ihrem Browser auf dem Server, und wenn Sie auf das Vorhängeschloss klicken, sollten Sie in der Lage sein, das Zertifikat herunterzuladen/zu exportieren. – alexisdm
gibt es kein Zertifikat, das Vorhängeschloss ist überkreuzt. Die Site ist nicht vertrauenswürdig. dachte, dass, wenn Sie selbstsigniert verwendeten, Sie kein Zertifikat brauchten – chikuba