Erstellen eines Zertifikats zur Verwendung mit SslStream AuthenticateAsServer ohne Importieren

8

Ich bin in einem kurvenreichen Labyrinth aus Zertifikaten und privaten Schlüsseln verloren.

Ich schreibe einen Server in C #. Ich möchte, dass SSL-Verbindungen akzeptiert werden. Zu Testzwecken möchte ich ein Zertifikat für "localhost" generieren und dieses Zertifikat für den Server verwenden. Idealerweise möchte ich meinen Zertifikatsspeicher nicht belasten, daher möchte ich nur eine Datei oder Dateien auf der Festplatte, die der C # -Code laden kann, um das Zertifikat bereitzustellen.

Alles, was ich versucht habe (mit Kochbuchansätzen, die von Websuchen vorgeschlagen wurden), gibt mir entweder "Die dem Paket bereitgestellten Anmeldeinformationen wurden nicht erkannt" oder "Der Servermodus SSL muss ein Zertifikat mit dem zugehörigen privaten Schlüssel verwenden."

Gibt es eine Möglichkeit, ein Zertifikat und einen privaten Schlüssel zu generieren und sie anschließend in ein X509Certificate-Objekt zu laden, ohne sie auch in meinen Computerzertifikatsspeicher zu laden?

    
Nikki Locke 08.01.2013, 11:54
quelle

5 Antworten

12

Am Ende habe ich Folgendes ausgeführt, um eine Datei server.pfx zu erstellen:

%Vor%

Dann habe ich es in Code geladen mit:

%Vor%

(Ich habe das Passwort nicht wirklich so programmiert: -)

Der Trick bestand darin zu wissen, dass ich eine PFX-Datei brauchte und dass ich sie mit der X509Certificate2-Klasse anstatt mit X509Certificate laden musste.

    
Nikki Locke 08.01.2013, 19:30
quelle
3

Niki Loche Methode funktioniert.

Wenn Sie The specified network password is not correct. erhalten, sollten Sie es ohne Passwort in C # versuchen. Es spielt keine Rolle, welches Passwort du in makecert eingegeben hast.

%Vor%

Aber wenn Sie ein Passwort verwenden möchten (es gibt einen Grund, es ist da :)), versuchen Sie pvk2pfx.exe Befehl zu ändern:

pvk2pfx.exe "-pi Kennwort -pvk Server.pvk -spc Server.cer -pfx Server.pfx

und in C # eingeben:

certificate = new X509Certificate2 ("Server.pfx", "password");

Das Passwort muss mit dem der cer-Datei übereinstimmen.

Das hat den Trick für mich gemacht. Ich hoffe, es wird jemandem helfen.

    
ac989 01.11.2013 00:49
quelle
1

Es gibt eine Reihe von Tools, mit denen Sie als Ihre eigene Zertifizierungsstelle agieren und ein Zertifikat generieren können. XCA ist einer von ihnen. Es gibt auch eine Reihe von Methoden, die zum Beispiel OpenSSL-Befehle verwenden.

Das Erstellen eines selbstsignierten Zertifikats scheint nur die einfachste Option zu sein, aber es kann sich lohnen, eine Test-CA (und ein separates Serverzertifikat) zu verwenden. Dadurch können Sie die Test-CA in den Speicher des Browsers importieren, um die Tests realistischer zu gestalten. Es ist nicht viel schwieriger mit den richtigen Tools (z. B. XCA).

Sobald Sie Ihr Serverzertifikat und seinen privaten Schlüssel generiert haben, wandeln Sie es in eine PKCS # 12-Datei um (.p12 / .pfx).

Sie können es dann mit X509Certificate2.import(...) laden. (Siehe Beispiel in diese Antwort .)

    
Bruno 08.01.2013 13:57
quelle
0

Wenn Sie IIS haben, können Sie dies über den IIS-Manager tun, wie hier beschrieben:

Ссылка

    
wbt11a 18.06.2014 16:20
quelle
0

Ich hatte das gleiche Problem beim Importieren eines Computerzertifikats aus dem Computerspeicher (nicht aus dem Benutzerspeicher). Ich habe es gelöst, indem ich Visual Studio als Administrator ausgeführt habe, da Administratorrechte erforderlich sind, um auf den privaten Schlüssel eines Computerspeicherzertifikats zuzugreifen.

    
user4024722 09.09.2014 22:44
quelle

Tags und Links