Erstellung eines selbst signierten Test-Zertifikates für .NET's SslStream
Christian Prochnow — Di, 02/26/2008 - 14:09
.NET Server-Anwendungen, welche den SslStream benutzen, benötigen zwingend ein Zertifikat. Da es wenig Sinn macht "echte" Zertifikate für Testzwecke zu beantragen, kann man sich mit einem selbst signierten Zertifikat aushelfen.
Zertifikat-Erstellung
Für die Erstellung eines selbst signierten Zertifikates wird das makecert Tool benötigt, welches im .NET 2.0 SDK bereits enthalten ist.
Mit folgender Kommandozeile wird die Zertifikatdatei test.cer erstellt und im Zertifikatspeicher des aktuellen Benutzers installiert:
makecert.exe -r -pe -n "CN=host.my.net" -len 2048 -ss my -sky exchange test.cer
Kommandozeilenoptionen
-r Erstellt ein selbst signiertes Zertifikat.
-pe Markiert den privaten Schlüssel als exportierbar.
-n "CN=host.my.net" Legt den Hostnamen fest, welcher dieses Zertifikat nutzt um sich zu authentifizieren.
-len 2048 Setzt die Schlüssellänge auf 2048 bit fest.
-ss my Installiert das Zertifikat in den Zertifikatspeicher des aktuellen Benutzers.
-sky exchange Erstellt ein Zertifikat für die sichere Übertragung von Daten.
test.cer Dateiname für das Zertifikat.
Zertifikat benutzen
Das Zertifikat kann nun mittels der Klasse X509Certificate geladen und zusammen mit dem SslStream benutzt werden:
X509Certificate serverCert = new X509Certificate("test.cer");
sslStream.AuthenticateAsServer(serverCert);
Anmerkungen
Achten Sie darauf, dass der Hostname (CN=host.my.net) dem Namen entsprechen muss, den der Client bei Aufruf der AuthenticateAsClient-Methode übergibt.
Das Zertifikat wird im Zertifikatspeicher des aktuellen Benutzers gespeichert, es kann über Internetoptionen -> Zertifikate wieder gelöscht werden.
