Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Fehler The server mode SSL must use a certificate with the associated private key bei SslStream.AuthenticateAsServer
Kriz
myCSharp.de - Member



Dabei seit:
Beiträge: 114

Themenstarter:

Fehler The server mode SSL must use a certificate with the associated private key bei SslStream.AuthenticateAsServer

beantworten | zitieren | melden

Servus,

ich habe eine *.crt Datei mit Certificate und Private Key Abschnitt.
Dieses lese ich ein mit


X509Certificate2 serverCertificate = X509Certificate2.CreateFromCertFile("Data\\certificate.crt");

Nun möchte ich einen verschlüsselten TCPListener starten, bekomme aber bei


SslStream sslStream = new SslStream(client.GetStream(), false);
sslStream.AuthenticateAsServer(serverCertificate, clientCertificateRequired: true, checkCertificateRevocation: true);

den Fehler
Fehler
The server mode SSL must use a certificate with the associated private key

Woran haperts, was hab ich vergessen?

Danke im Vorraus!
Kriz
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Kriz am .
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.821
Herkunft: Waidring

beantworten | zitieren | melden

Hallo Kriz,

bei X509Certificate2.CreateFromCertFile muss hierfür ein Zertifikat mit privatem Schlüssel angegeben werden. Oder der private Schlüssel wird als extra Argument bei dieser Methode angegeben.

Für die Serverseite sind public und private key nötig, andernfalls kann SSL nicht funktionieren.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
Kriz
myCSharp.de - Member



Dabei seit:
Beiträge: 114

Themenstarter:

beantworten | zitieren | melden

Hallo gfoidl,

erstmal danke für die Antwort!
Das heisst das vorhandene Zertifikat (mit CERTIFICATE und PRIVATE KEY Abschnitt) kann ich als Client-Zertifikat nehmen, aber ist als Server-Zertifikat ungeeignet?!
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Kriz am .
private Nachricht | Beiträge des Benutzers
ClaraSoft
myCSharp.de - Member



Dabei seit:
Beiträge: 48

beantworten | zitieren | melden

Nein, bloß nicht.
Der Private Key sollte nur dem Server bekannt sein. Die Clients brauchen Public Keys.
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.821
Herkunft: Waidring

beantworten | zitieren | melden

Hallo,

jetzt zeigt sich warume es wichtig mit möglichst genauen Begriffen zu arbeiten ;-)
Zitat
Das heisst das vorhandene Zertifikat (mit CERTIFICATE und PRIVATE KEY Abschnitt) kann ich als Client-Zertifikat nehmen
"Client-Zertifikat" ist hier undeutlich und je nach dem was genau gemeint ist hat ClaraSoft recht od. auch nicht.

In Bezug auf SSL (lässt sich vom Thema ableiten) hat ClaraSoft recht.
Der Server braucht den public und private key damit er "verschlüsseln" kann. Der Client hingegen braucht vom Server nur den public key.
TCPListener ist server-seitig, daher klappte es vermutlich nicht, da kein private key vorhanden ist.

Ist bei "Client-Zertifikat" jedoch der Zusammenhang "Authentifizierung per Client-Zertifikat" (da auch mit SSL / TLS zusammenhängt) so benötigt der Client public + private key, aber seine eigenen! Und nicht jene vom Server.

Grundsätzlich sollten die private Schlüssel (keys) nur auf der Seite bleiben zu der sie gehören -- daher auch "private".
D.h. Client private key kennt der Server nicht und umgekehrt. Alles andere ist absolut unsicher (und fahrlässig).


mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers