Seite 1 von 1

Wie setze ich SslConfig bei QtSoap?

Verfasst: 22. Oktober 2009 12:59
von AuE
Hi,

ich verzeweifel gerade daran, wieich den QtSoapHttpTransport beibringen kann das er eine best. Ssl Config nutzen soll!
Der NetworkAccessManager hat soweit ich das sehe keine möglichkeit diese (oder etwas anderes zu setzen.

Jemand von euch eine Idee?

Verfasst: 22. Oktober 2009 16:51
von AuE
Gibt es nicht irgendwie die Möglichkeit das auch über enen SslSocket zu lösen?

Mitt Ssl Socket komme ich auf den Server und kann mich mit ihnverbinden.
Im connected kann schieße ich ihn dann wie folgt ab:

Code: Alles auswählen

QtSoapMessage message;
	message.setMethod( QtSoapQName("avmg__stop", "urn:javacsoap.local.avmg"));

ByteArray arr =  message.toXmlString().toLatin1();
qint64 written = socket->write( arr );
Q_ASSERT(written == arr.size() );
Es muss dochz aber irgendwie möglich sein sich via Ssl auf einen Soap zu connecten?!

Verfasst: 23. Oktober 2009 10:50
von AuE
So habjetzt den Zugriff ohne SSL und da kann ichz auch wunderbar kommunizieren.
Hilft aber nix da der Server später nur ssl können wird(mit Zertifikat, Key usw.)
Also das verbinden via SSL geht und das auslesen ohne ssl geht....
Jetzt muss ich das nur noch zusammenbringen....

Jemandeine Ahnung wie ich das SSL vom QtSoap einstellen kann?

Verfasst: 23. Oktober 2009 11:04
von macman
QtSoap bekommt vom SSL nichts mit, das ist Sache von QHttp, bzw. QtSoapHttpTransport. Das Einzige was in meiner QtSoap-Klasse bzgl. SSL hinzugefügt wurde, ist der Connect um SSL-Fehler abzufangen. Ich hatte damals wochenlangen Mailverkehr mit den Trolls, da wir hier einen ISA-Proxy als zusätzliche Hürde haben.

Verfasst: 23. Oktober 2009 11:31
von AuE
Ja aber wo und wie soll ich das denn setzen?

Der QtSoapHttpTransport hat doch nirgends etwas wo ich diese config setzen kann oder?

Das komische ist ja das ich zwar https anmachen kann dann bekomme ich ja nur einen Handshake fehler (ssl handshake...)

Aber das Ssl Errors Signal bekomme ich nicht.



Also ich habe schon probiert mich via SslSocket zu verbinden. Das klappt. Die SslConfig istda und richtig.


Das einzige was ich sehe wo man SslConfig setzen kann ist bei der NetworkReply => der hat ein set SslConfiguration. Allerdings ist das ja bevor man eine abfrage sendet ein Null Ptr...

Wo/wann hast du deine config geschrieben?

Verfasst: 23. Oktober 2009 12:42
von AuE
Habe grade mal die Qt Sacehn durchgesteppt....
habt ihr bei Submit request einfach die ssl reingesetzt????

Das wäre dann aber nicht mehr LGPL konform oder?

Verfasst: 24. Oktober 2009 10:48
von macman
Ist schon Jahre her das ich das gemacht habe und dann auch nur von Clientseite aus. Da gab es nichts an SSL zu konfigurieren, hat alles QHttp gemacht. Wenn ich die neuen QtSoap-Sourcen mit meinen von damals vergleiche, dann hat sich da einiges getan, von SSL aber immer noch keine Spur.

Verfasst: 24. Oktober 2009 19:19
von AuE
Hi,

ja aber wie kann ich sonst mein Zertifikat und Key vorgeben?
Nur https auswählen reicht nicht.
Das CA und Key liegen in der Ressource und sollen ja nicht eingesehen werden können!

Verfasst: 25. Oktober 2009 07:56
von macman
AuE hat geschrieben:Nur https auswählen reicht nicht.
Beim Client, ja. Beim Server sieht es anders aus. Da musst du den Socket bestimmen und dann nimmst eben einen QSslSocket, denn nur da kannst du wohl ein Zertifikat setzen.

Verfasst: 25. Oktober 2009 10:36
von AuE
ok.... aber wieso schlägt dann andauernd der Handshake fehl??

Ich hab mal in den Java Src meines vorgängers gesucht und der hat es so wie ich gemacht. CA setzen und den SslKey aus dem Servercert rausgeholt...

Wird zeit das ich mal mit den Trolls spreche glaube ich ;-)

Verfasst: 26. Oktober 2009 07:27
von macman
Ja mei, mit Kommerzlizenz hätte ich das schon längst gemacht :-) Die sind wirklich bemüht und helfen auch, zumindest in der Vor-Nokia-Zeit. Ich hoffe da hat sich nichts geändert.

Verfasst: 26. Oktober 2009 11:17
von AuE
Also ich habs hinbekommen.

Die Lösung: anpassen der Qt Sourcen:

Code: Alles auswählen

void QtSoapHttpTransport::submitRequest(QtSoapMessage &request, const QString &path,const QSslConfiguration &sslConfig/*this is optional...default QSslConfiguration()*/)
{
    QNetworkRequest networkReq;
    networkReq.setSslConfiguration( sslConfig); // set the SslConfiguration
    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());
}
Weiß nur nicht in wie weit das jetzt noch LGPL konform ist.