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

Alles rund um die Programmierung mit Qt
Antworten
woody
Beiträge: 85
Registriert: 1. April 2011 21:13

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

Beitrag 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
Zuletzt geändert von woody am 23. Januar 2012 09:05, insgesamt 1-mal geändert.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Re: Signal encrypted() wird nicht gesendet

Beitrag 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.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Signal encrypted() wird nicht gesendet

Beitrag 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.
woody
Beiträge: 85
Registriert: 1. April 2011 21:13

Re: Signal encrypted() wird nicht gesendet

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