Wie setze ich SslConfig bei QtSoap?

Alles rund um die Programmierung mit Qt
Antworten
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Wie setze ich SslConfig bei QtSoap?

Beitrag 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?
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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?!
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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?
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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?
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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?
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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!
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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 ;-)
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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.
Antworten