Hi,
Ich schreibe eine Client-Server-Anwendung, bei der ich über eine TCP-Verbindung mit SSL-Verschlüsselung komunizieren möchte.
Ich hab dazu mittels OpenSSL ein eigenes Zertifikat erstelle:
Quelltext
1: 2:
| openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout "GameCert\signkey.key" -out "GameCert\signkey.key" openssl pkcs12 -export -out "GameCert\certificate.pfx" -in "GameCert\signkey.key" |
Der Server akzeptiert Verbindungen via
C#-Quelltext
1: 2: 3: 4:
| serverCert = new X509Certificate2("certificate.pfx", "cert_password"); [...] this.MyStream = new SslStream(this.Socket.GetStream(), false); this.MyStream.AuthenticateAsServer(serverCert, clientCertificateRequired: false, checkCertificateRevocation: true); |
Der Client versucht sich dann zum Server zu verbinden:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| this.myStream = new SslStream(this.PlayerSocket.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null); try { this.myStream.AuthenticateAsClient(this.ServerIP); } catch (AuthenticationException e) { this.Logger.LogError("SSL-Authentication failed - closing the connection. " + e.Message); this.PlayerSocket.Close(); return; } |
Dabei wir die AuthenticationException geworfen:
Zitat: |
Das Remotezertifikat ist laut Validierungsverfahren ungültig. |
Woran kann das liegen? Hab ich beim Erstellen des Zertifikats was falsch gemacht?
Gruß