Frage

Ich versuche es, herauszufinden, ob eine Möglichkeit ist ein .NET-Client ein Client-Zertifikat verwenden zu haben, ohne die Windows-Schlüsselspeicher in irgendeiner Weise beteiligt ist.

Ich habe einen Code-Schnipsel wie folgt aus:

test1.Service s = new test1.Service();
X509Certificate c = X509Certificate.CreateFromCertFile(@"C:\test.pem");
s.ClientCertificates.Add(c);
int result = s.TestMethod();

Allerdings funktioniert dies nur, wenn ich auch das Zertifikat verweist in „test.pem“ in meinem Zertifikatspeicher installiert. Ich nehme an, das liegt daran, dass der Schlüssel für die Aushandlung erforderlich ist. Wenn ich nicht das CERT / Schlüssel im Speicher habe, wird das Zertifikat nicht mit der Anforderung gesendet.

Was ich tun möchte, ist in der Lage sein, um das Zertifikat zu bieten beide und ein privaten Schlüssel aus einer Datei oder Dateien und die Windows-Zertifikatspeicher in irgendeiner Weise betreffen.

Gibt es eine Möglichkeit, dies zu tun?

War es hilfreich?

Lösung

Ich werde eine Antwort auf meine eigenen Posten Posten, aber offen lassen, um zu sehen, ob andere lösen kann es anders aus.

Grundsätzlich bin ich stochern. Wenn Sie eine PKCS12-Datei (mit den beiden Schlüssel und Zertifikat in it) können Sie die X509Certificate2 Klasse verwenden, um die Datei zu laden und verwenden Sie es, und es wird die Schlüsselspeicher nicht verhören.

Ich kann nicht einen Weg, dies zu tun mit einem Flach PEM-Schlüssel und Zertifikat-Dateien (wie das, was Sie mit Python benötigen würden, zum Beispiel).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top