x509 C # примеры? - PullRequest
       81

x509 C # примеры?

9 голосов
/ 09 января 2011

Я пролистывал статью за статьей о создании сертификата x509, подписании и т. Д., Но мне еще не удалось найти решение моей проблемы - интересно, сможет ли кто-нибудь указать мне правильное направление, потому что я полностью сбит с толкус этой точки зрения.Вот что я пытаюсь сделать:

Для клиентского приложения:

  1. Создать пару открытых / закрытых ключей
  2. Получить ключи как байты [] и сохранитьих в файловой системе.
  3. Создание сертификата x509
  4. Создание запроса на подпись

Для серверного приложения:

  1. Созданиеоткрытая / закрытая пара ключей
  2. Захватите ключи в виде байта [] и сохраните их в файловой системе.
  3. Создайте самозаверяющий сертификат X509
  4. Подпись клиентских сертификатов
  5. Проверка клиентских сертификатов как подписанных самозаверяющим сертификатом в # 3 выше.

Мне нужно сделать все это программно в .Net и без внешних .exe, таких как makecert.exe или openssl.exe - мне нужно использовать внутреннюю библиотеку и т. д.

У меня есть биты и кусочки, разработанные с использованием различных библиотек, таких как Bouncy Castle, .Net Crypto, openssl и т. д., - но я всегда сталкиваюсь с препятствиямилибо с отсутствием документирования, либо с неспособностью добраться до пар ключей как байт[] чтобы я мог их сохранить и т. д. Либо я делаю это намного сложнее, чем есть, либо существует серьезная нехватка документации - или и то, и другое.

Я полагаю, что кто-то должен был это сделатьраньше, и я бы очень признателен за помощь - я открыт для любых предложений - спасибо!

.. и PKIBlackbox не вариант - он стоит слишком дорого: (

Ответы [ 2 ]

3 голосов
/ 09 января 2011

Вы можете использовать библиотеку Bouncycastle C # . Документация не очень хорошая, но я считаю, что с ней не так уж сложно работать. Сначала вы можете перейти к Javadocs для java-версии библиотеки; версия Java и C # очень похожи. Во-вторых, посмотрите на исходный код, поскольку он относительно легко читается.

Класс, который вы хотите Org.BouncyCastle.X509.X509V3CertificateGenerator. В сети есть несколько примеров Java, которые вы можете использовать как руководство по созданию версии на C #. Здесь является одним простым и понятным.

Наконец, Bouncycastle имеет очень полезный класс Org.BouncyCastle.Security.DotNetUtilities, который помогает отображать объекты Bouncycastle и объекты .NET. Одна такая пара методов - ToX509Certificate() и FromX509Certificate(). Также обратите внимание, что класс .NET X509Certificate имеет методы Import() и Export().

Вместе их должно быть достаточно, чтобы вы могли решить свою проблему.

0 голосов
/ 09 января 2011

Я выполнил создание и хранение сертификата X.509 в хранилище ключей Windows.Помимо makecert, очень мало доступной документации, и makecert не является приемлемым вариантом в большинстве случаев.Я нашел API Pluralsight очень полезными, так как они поддерживают генерацию сертификата, а также хранение сертификата в хранилище ключей Windows.Практически нет документации (конечно), но если вы будете искать ее, вы найдете несколько блогов, которые показывают, как ее использовать.Вот несколько ссылок.

http://www.pluralsight -training.net / community / blogs / keith / archive / 2009/01/22 / create-self-signature-x-509-сертификаты вa-flash-with-self-cert.aspx

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

...