2011-01-09 17 views
9

Ich habe Artikel für Artikel über X509 Cert-Erstellung, Unterzeichnung usw. gegossen, aber ich habe noch eine Lösung für mein Problem zu finden - frage mich, ob jemand mich in die richtige Richtung zeigen kann, weil ich völlig verwirrt bin dieser Punkt. Hier ist, was ich versuche zu tun:x509 C# Beispiele?

Für die Client-Anwendung:

  1. Generieren eines öffentlichen/privaten Schlüsselpaar
  2. Besorgen Sie sich die Schlüssel als byte [] und speichern sie auf das Dateisystem.
  3. Generieren Sie eine x509 Zertifikat
  4. eine Signaturanforderung generiert

Für den Server-App:

  1. ein öffentliches/privates Schlüsselpaar
  2. sie
  3. Besorgen Sie sich die Schlüssel als byte [] und speichern generieren auf dem Dateisystem.
  4. Erstellen Sie ein selbst signiertes Zertifikat X509
  5. Sign-Client-Zertifikate
  6. Validate-Client-Zertifikate, wie durch selbst signiertes Zertifikat in # 3 oben unterzeichnet werden.

Ich brauche das alles programmatisch in .Net tun und ohne externe .exe ist wie makecert.exe oder openssl.exe - Ich brauche eine In-Prozess-Bibliothek verwenden usw.

Ich habe Bits und Stücke, die mit verschiedenen Bibliotheken wie Bouncy Castle, .Net Crypto, OpenSSL usw. ausgearbeitet wurden - aber ich traf immer einen Roadblock, entweder mit fehlender Dokumentation oder weil ich nicht in der Lage war, als Byte [] zu den Keypairs zu kommen 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 mal 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 :(

+0

http://stackoverflow.com/questions/1228439/x509-guide-tutorial-in-c –

+0

PKIBlackbox ist die einzige, soweit ich weiß, dass PKCS # 10 (Zertifikatsanforderungen) in .NET unterstützt. Und es hat Unterstützung, Proben und Dokumentation –

Antwort

3

Sie können die Bouncycastle C# library verwenden. Die Dokumentation ist nicht gut, aber ich glaube, es ist nicht schwer mit ihnen zu arbeiten. Sie können zuerst auf die Javadocs für die Java-Version der Bibliothek gehen; Die Java und C# Version sind sehr ähnlich. Zweitens, schauen Sie sich 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. Here ist eine einfache einfache.

Schließlich hat Bouncycastle eine sehr nützliche Klasse Org.BouncyCastle.Security.DotNetUtilities, die bei der Zuordnung zwischen Bouncycastle-Objekten und .NET-Objekten hilft. Ein solches Paar von Verfahren sind ToX509Certificate() und FromX509Certificate(). Beachten Sie außerdem, dass die .NET X509Certificate-Klasse über die Methoden Import() und Export() verfügt.

Zusammen sollten diese ausreichen, damit Sie Ihr Problem lösen können.

0

I X.509-Zertifikat Erstellung und Speicherung in das Fenster Schlüsselspeicher getan haben, andere als MakeCert gibt es sehr wenig gute Dokumentation und. makecert stellt in den meisten Fällen keine praktikable Lösung dar. Ich fand die pluralsight-APIs sehr hilfreich, da sie sowohl die Zertifikaterstellung als auch die Speicherung des Zertifikats im Windows-Keystore unterstützen, es gibt natürlich keine Dokumentation, aber wenn Sie danach suchen Sie werden einige Blogs finden, die zeigen, wie man es benutzt .. Hier sind einige Links:

http://www.pluralsight-training.net/community/blogs/keith/archive/2009/01/22/create-self-signed-x-509-certificates-in-a-flash-with-self-cert.aspx

http://mikehadlow.blogspot.com/2010/02/creating-x509-certificates-with.html