Seite 1 von 1

SSL mit QNetworkAccessManager

Verfasst: 5. Mai 2010 17:16
von danibert
Hallo,

ich versuche, eine Webseite mit dem QNetworkAccessManager per SSL aufzurufen und die Ausgabe des Servers in myAnswer aufzufangen. Ohne SSL klappt es problemlos mit :

Code: Alles auswählen

myAnswer = myManager -> post(QNetworkRequest(Qurl("http://meineseite.de")), daten);
Gebe ich nun als URL "https://meineseite.de" an, wird keine Anfrage an den Server gesendet. Ich bekomme auch keine Fehlermeldung.
Ich habe schon den ganzen Tag gegoogelt und in der Doku gestöbert, aber die Informationsmenge erschlägt mich komplett. Irgendwie haben alle Beispiele nichts mit dem QNetworkAccessManager zu tun (oder ich kapier es einfach nicht). Gibt es wirklich keine einfache, und für mich als Anfänger nachzuvollziehende Möglichkeit, einen simplen SSL-Aufruf hinzubekommen?

Danke für alle Tipps

Verfasst: 5. Mai 2010 17:33
von AuE
Hatte das gleiche mal mit SSL mit Soap ..... hab dann die submit Request wie folgt angepasst....evtl hilft dir das!

Code: Alles auswählen

 QNetworkRequest networkReq;
    networkReq.setSslConfiguration(sslConfig);
    networkReq.setHeader(QNetworkRequest::ContentTypeHeader, QLatin1String("text/xml;charset=utf-8"));
    networkReq.setRawHeader("SOAPAction", soapAction.toAscii());
    url.setPath(path);
    networkReq.setUrl(url);

    soapResponse.clear();
    networkRep = networkMgr.post(networkReq, request.toXmlString().toUtf8().constData());

Verfasst: 5. Mai 2010 18:07
von danibert
@AuE
was muss bei sslConfig hin? Wie hattest Du das deklariert?

Verfasst: 5. Mai 2010 18:20
von AuE

Code: Alles auswählen

QSslConfiguration getSSL(){
QSslConfiguration tmpSslCfg;

	QFile fileCA(":/cert/cacert.pem");
	QFile fileSERVER(":/cert/server.pem");

	QSslCertificate certCA(&fileCA, QSsl::Pem);
	QSslCertificate certSERVER(&fileSERVER, QSsl::Pem);

	if((certCA.isValid() && !certCA.isNull())&&(certSERVER.isValid() && !certSERVER.isNull()))
	{
		tmpSslCfg.setLocalCertificate(certSERVER);
		fileSERVER.close();	 QByteArray passphrase = "dummy";
		fileSERVER.open(QIODevice::ReadOnly);
		QSslKey  key(&fileSERVER, QSsl::Rsa, QSsl::Pem,QSsl::PrivateKey , passphrase);
		tmpSslCfg.setCaCertificates(QList<QSslCertificate>() << certCA);
		tmpSslCfg.setPrivateKey(key);
		tmpSslCfg.setProtocol(QSsl::TlsV1);
		tmpSslCfg.setPeerVerifyMode(QSslSocket::QueryPeer);
		fileSERVER.close();
		fileCA.close();
	}
	
	return tmpSslCfg;
}

Verfasst: 14. Mai 2010 21:10
von gouranga
Vorraussetzung ist natürlich, dass du Qt mit OpenSSL Support kompiliert hast und OpenSSL entsprechend kompiliert und eingerichtet ist.

Dann sollte der QNetworkAccessManager https:// und SSL im allgemeinen implizit verwenden. Klappt bei mir tadellos!

https bedarf dann auch keiner weiteren SSL Konfiguration (zumindest solange der NetworkAccessManager es mit validen Zertifikaten zu tun bekommt.)

Das hier sollte dir helfen:
http://www.gouranga.me/2010/03/09/xml-r ... d-openssl/