2011-01-09 16 views
9

Przeczytałem artykuł po artykule na temat tworzenia certyfikatu x509, podpisywania itp., Ale jeszcze nie znalazłem rozwiązania mojego problemu - zastanawiam się, czy ktoś może wskazać mi właściwy kierunek, ponieważ jestem całkowicie zdezorientowany ten punkt. Oto, co usiłuję zrobić:x509 C# przykłady?

Dla aplikacji klienckich:

  1. wygenerować parę kluczy publiczny/prywatny
  2. chwycić kluczy jako byte [] i przechowywać je w systemie plików.
  3. wygenerować certyfikat x509
  4. wygenerować żądanie podpisania

dla aplikacji serwera:

  1. wygenerowania publicznego/prywatnego pary kluczy
  2. chwycić kluczy jako byte [], a następnie zapisać je w systemie plików.
  3. utworzyć samodzielnie podpisanego certyfikatu X509
  4. certyfikatów klienta Znak
  5. certyfikaty klienckie Walidacja jako podpisany przez samopodpisanego cert w # 3 powyżej.

muszę to zrobić wszystko programowo w .NET i bez zewnętrznych .exe Like makecert.exe lub openssl.exe - muszę korzystać z biblioteki w procesie itp

mam bity i utwory opracowane przy użyciu różnych bibliotek, takich jak Bouncy Castle, .Net Crypto, openssl itp. - ale zawsze trafiałem na blokadę z brakiem dokumentacji lub nie mogłem dostać się do kluczy jako bajt [], więc mogę je utrzymać, itp. Albo robię to o wiele trudniej niż jest, albo istnieje poważny brak dokumentacji - albo jedno i drugie.

Myślę, że ktoś musiał to wcześniej zrobić, a ja byłbym wdzięczny za pomoc - jestem otwarty na wszelkie sugestie - dziękuję!

.. i PKIBlackbox nie jest rozwiązaniem - to kosztuje zbyt wiele :(

+0

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

+0

PKIBlackbox jest jedynym, o ile wiem, który obsługuje PKCS # 10 (żądania certyfikatów) w .NET. Ma wsparcie, próbki i dokumentację –

Odpowiedz

3

Możesz użyć Bouncycastle C# library. Dokumentacja nie jest dobra, ale uważam, że praca z nią nie jest zbyt trudna. Możesz najpierw przejść do Javadocs dla wersji biblioteki java; wersja java i C# są bardzo podobne. Po drugie, spójrz na kod źródłowy, ponieważ jest stosunkowo łatwy do odczytania.

Klasa, którą chcesz, to Org.BouncyCastle.X509.X509V3CertificateGenerator. Istnieje kilka przykładów java w sieci, które można wykorzystać jako przewodnik do tworzenia wersji C#. Here jest jednym prostym.

Wreszcie, Bouncycastle ma bardzo przydatną klasę Org.BouncyCastle.Security.DotNetUtilities, która pomaga mapować obiekty Bouncycastle i obiekty .NET. Jedną z takich metod jest ToX509Certificate() i FromX509Certificate(). Należy również zauważyć, że klasa .NET X509Certificate ma metody Import() i Export().

Wszystkie te elementy powinny wystarczyć do rozwiązania problemu.

0

Zrobiłem tworzenia certyfikatów X.509 i przechowywania kluczy do szyb innych niż MakeCert jest bardzo mało dostępny i dobra dokumentacja. W większości przypadków makecert nie jest realną opcją, a interfejsy API pluralsight są bardzo przydatne, ponieważ wspierają generowanie certyfikatów oraz przechowywanie certyfikatu w magazynie kluczy Windows. Nie ma praktycznie żadnej dokumentacji (oczywiście), ale jeśli ją wyszukasz znajdziesz kilka blogów, które pokazują, jak z niego korzystać. Oto kilka linków:

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