Seite 1 von 1

[gelöst]Signal encrypted() wird nicht gesendet

Verfasst: 13. Januar 2012 17:50
von woody
Hi
Ich will eine ssl verschlüsselte Kommunikation zwischen Client und Server realisieren. Leider wird das encrypted() signal vom QSslSocket nicht emitted....
client

Code: Alles auswählen

socket -> setPeerVerifyMode(QSslSocket::QueryPeer);
socket->addCaCertificates(QSslCertificate::fromPath("client_sign.crt"));
socket -> setLocalCertificate("client_sign.crt");
socket->setPrivateKey("client.key");
socket -> connectToHostEncrypted( "1.1.1.10", 457);

connect(socket, SIGNAL(encrypted()), SLOT(connectionAccepted())); // slot wird nicht ausgelöst
connect(socket,SIGNAL(stateChanged(QAbstractSocket::SocketState)),this, SLOT(socketStateChanged(QAbstractSocket::SocketState)));
connect(socket, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
connect(socket, SIGNAL(disconnected()), socket, SLOT(deleteLater()));
connect(socket, SIGNAL(sslErrors(QList<QSslError>)),SLOT(sslErrors(QList<QSslError>)) );
Der status des Sockets ist aber schon QAbstractSocket::ConnectedState (am client und am server). Und es treten keine SslErrors auf.
Vl. weiß jemand, was da sein könnte....

danke

Re: Signal encrypted() wird nicht gesendet

Verfasst: 17. Januar 2012 16:49
von pfid
Fehlt da im connect-Aufruf ein zweites "this"? Ausserdem könntest du auch den Returnwert vom connect abfragen, und dir die Konsolenmeldungen nach dem Start anschauen.

Re: Signal encrypted() wird nicht gesendet

Verfasst: 17. Januar 2012 18:20
von franzf
pfid hat geschrieben:Fehlt da im connect-Aufruf ein zweites "this"?
Nein, es gibt auch ein non-static-connect, das implizit this als Empfängerobjekt setzt.

Mich würde die Klassendefinition interessieren, und natürlich auch, ob etwas auf der Console ausgegeben wird.

Re: Signal encrypted() wird nicht gesendet

Verfasst: 23. Januar 2012 09:04
von woody
Hi,
sorry für die späte Rückmeldung! Der Code hat schon gepasst. Es hat nur Probleme mit dem Zertifikat gegeben, aber wenn man mit folgender
Anleitung ein Zertifikat erstellt, funktioniert es... ; )

CA private Key und CA Zertifikat:
openssl genrsa -des3 -out ca.key 4096
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

Server Schlüssel Paar
openssl genrsa -des3 -out server.key 4096
openssl req -new -key server.key -out server.csr

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt

Client Schlüssel Paar:
openssl genrsa -des3 -out client.key 4096
openssl req -new -key client.key -out client.csr

openssl x509 -req -days 3650 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt