Используйте файл списка отзыва сертификатов с X509 в .Net - PullRequest
0 голосов
/ 09 сентября 2018

Нужно защитить клиент-серверную связь. Я нашел хороший подход в .Net Core для генерации сертификатов X509 (самоподписанный). Но на самом деле не хватает информации о том, как работать со списком отзыва сертификатов в .Net Framework. Будем благодарны за ответы на эти вопросы:

  • Как создать файл CRL с .Net (без BouncyCastle)? Можно ли его создать как любой текстовый файл и подписать после? Если да, какой формат столбцов?

  • Правильно ли я понимаю, что файл CRL может быть добавлен в сертификат? Насколько я знаю, смена сертификата нарушает его.

  • Как добавить сертификат в список отзыва сертификатов?

1 Ответ

0 голосов
/ 09 сентября 2018

Как создать файл CRL с .Net (без BouncyCastle)?

вы не можете, .NET, естественно, не поставляет API для работы с файлами CRL X.509. Вы должны использовать сторонние библиотеки.

Может ли он быть создан как любой текстовый файл и подписан после?

Нет, это не текстовый файл.

Если да, какой формат столбцов?

X.509 CRL использует абстрактную синтаксическую нотацию один (ASN.1) для внутреннего представления, а модуль ASN.1 определен в RFC 5280, Приложение A.1 (стр. 118) . К сожалению, .NET не предоставляет инструментов для работы с необработанными данными ASN.1 (только для хорошо известных и поддерживаемых высокоуровневых типов).

Если вы не можете использовать сторонние библиотеки, вам придется изучить ASN.1 (непростые вещи), написать собственный двоичный анализатор и создать декодер CRL X.509 в соответствии с определением модуля ASN.1. Вот пример двоичного парсера ASN.1: Asn1Reader.cs , поэтому вы можете представить себе сложность в написании собственного надежного парсера. И пример декодера CRL X.509: X509CRL2.cs . Я бы предложил получить что-то уже работающее и использовать это.

Как добавить сертификат в список отзыва сертификатов?

Вам нужно будет создать конструктор / генератор CRL X.509 с помощью кодера ASN.1. Тип записи CRL определяется следующим образом:

 revokedCertificates     SEQUENCE OF SEQUENCE  {
      userCertificate         CertificateSerialNumber,
      revocationDate          Time,
      crlEntryExtensions      Extensions OPTIONAL
                               -- if present, version MUST be v2
                           }  OPTIONAL,

Это едва ли имеет смысл, если вы не знакомы с ASN.1, но раскрывает некоторые полезные вещи. Например, запись CRL состоит из серийного номера сертификата (целого числа) и даты отзыва (UTCTime или GeneralizedTime). При желании могут быть расширения записи CRL, например, причина отзыва (ENUMERATED).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...