x509 C # Beispiele?

9

Ich habe Artikel für Artikel über die Erstellung von x509-Certs, Signaturen usw. durchgespielt, aber ich muss noch eine Lösung für mein Problem finden - frage mich, ob jemand mich in die richtige Richtung weisen kann, weil ich gründlich verwirrt bin An diesem Punkt. Hier ist, was ich versuche zu tun:

Für die Client-App:

  1. Generieren Sie ein öffentliches / privates Schlüsselpaar
  2. Ergreife die Schlüssel als Byte [] und speichere sie im Dateisystem.
  3. Erzeuge ein x509-Zertifikat
  4. Erzeuge eine Signieranfrage

Für die Server-App:

  1. Generieren Sie ein öffentliches / privates Schlüsselpaar
  2. Ergreife die Schlüssel als Byte [] und speichere sie im Dateisystem.
  3. Erstellen Sie ein selbstsigniertes X509-Zertifikat
  4. Clientzertifikate signieren
  5. Validieren Sie Clientzertifikate als signiert durch selbstsigniertes Zertifikat in # 3 oben.

Ich muss dies alles programmatisch in .Net und ohne externe .exe-Dateien wie makecert.exe oder openssl.exe tun - ich muss eine In-Process-Bibliothek verwenden, usw.

Ich habe Bits und Stücke mit verschiedenen Bibliotheken wie Bouncy Castle, .Net Crypto, openssl usw. ausgearbeitet - aber ich habe immer einen Roadblock getroffen, weil ich keine Dokumentation hatte oder nicht in der Lage bin, als Byte zu den Keypairs zu kommen. so kann ich sie beharren usw. Entweder mache ich das viel schwieriger als es ist, oder es gibt einen ernsten Mangel an Dokumentation da draußen - oder beides.

Ich denke, jemand muss das schon einmal gemacht haben und ich würde mich über Hilfe freuen - ich bin offen für alle Vorschläge - danke!

.. und PKIBlackbox ist keine Option - es kostet zu viel: (

    
znelson 09.01.2011, 03:34
quelle

2 Antworten

3

Sie können die Bouncycastle C # -Bibliothek verwenden. Die Dokumentation ist nicht gut, aber ich glaube, es ist nicht schwer mit ihnen zu arbeiten. Sie können zuerst zu den Javadocs für die Java-Version der Bibliothek gehen; Die Java und C # Version sind sehr ähnlich. Zweitens, schau dir den Quellcode an, da er relativ einfach zu lesen ist.

Die gewünschte Klasse ist Org.BouncyCastle.X509.X509V3CertificateGenerator . Es gibt einige Java-Beispiele im Internet, die Sie als Leitfaden zum Erstellen einer C # -Version verwenden können. Hier ist ein einfacher, einfacher Weg.

Schließlich hat Bouncycastle eine sehr nützliche Klasse Org.BouncyCastle.Security.DotNetUtilities , die hilft, zwischen Bouncycastle-Objekten und .NET-Objekten zu mappen. Ein solches Methodenpaar sind ToX509Certificate() und FromX509Certificate() . Beachten Sie außerdem, dass die Klasse .NET X509Certificate die Methoden Import() und Export() hat.

Zusammen sollten diese ausreichen, um Ihnen zu ermöglichen, Ihr Problem zu lösen.

    
James K Polk 09.01.2011, 14:11
quelle
0

Ich habe X.509-Zertifikate erstellt und im Windows-Keystore gespeichert. Abgesehen von makecert gibt es sehr wenig gute Dokumentation und makecert ist unter den meisten Umständen keine brauchbare Option. Ich fand die Plurality-APIs sehr hilfreich, da sie sowohl die Zertifikatserzeugung als auch die Speicherung des Zertifikats im Windows-Schlüsselspeicher unterstützen. Es gibt praktisch keine Dokumentation, aber wenn Sie danach suchen, werden Sie einige Blogs finden, die zeigen, wie man es benutzt. Hier sind einige Links.

Ссылка

Ссылка

    
w.donahue 09.01.2011 04:42
quelle