Проблемы с программным созданием самозаверяющего ЦС и клиентского сертификата и списка отзыва

В настоящее время у меня возникла проблема с некоторыми программно самозаверяющими сертификатами, к которым я добавил точки распространения. По сути, ключевая проблема заключается в том, что по какой-то причине сертификаты, которые я создал программно с помощью Bouncy Castle, не могут получить доступ к CRL, указанному в сертификате. См. ниже пример вывода certutil;

Я рвал на себе волосы относительно того, почему возникает эта проблема, и поэтому, чтобы, по крайней мере, исключить сгенерированные сертификаты как проблему, я затем пошел и создал аналогичную структуру сертификата, используя открытый ssl. К моему ужасу, клиентский сертификат в этом случае смог без проблем подключиться к указанному CRL.

Я могу включить код, который я использую для создания сертификатов Root и Client, если это поможет, а также могу предоставить дополнительные выходные данные certutil, если это поможет отследить проблему.

Большое спасибо,

>CertContext[0][0]: dwInfoStatus=101 dwErrorStatus=1000040
  Issuer: CN=MyNewCA
  NotBefore: 1/17/2016 3:10 AM
  NotAfter: 1/17/2018 3:10 AM
  Subject: CN=Test.User
  Serial: 855daec11dd981ae87c379dadd323b
  2adc3620f29e8347ec7f007bee3b05a98a3ed49a
  Element.dwInfoStatus = CERT_TRUST_HAS_EXACT_MATCH_ISSUER (0x1)
  Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
  Element.dwErrorStatus = CERT_TRUST_REVOCATION_STATUS_UNKNOWN (0x40)
  Element.dwErrorStatus = CERT_TRUST_IS_OFFLINE_REVOCATION (0x1000000)
  Certificate AIA
  No URLs "None" Time: 0
  Certificate CDP 
  Wrong Issuer "Base CRL (01)" Time: 0
    [0.0] http://localhost/MyURL/RootRevocation2.crl

  >Certificate OCSP 
  No URLs "None" Time: 0
  Application[0] = 1.3.6.1.5.5.7.3.2 Client Authentication

>CertContext[0][1]: dwInfoStatus=109 dwErrorStatus=0
  Issuer: CN=MyNewCA
  NotBefore: 1/17/2016 3:10 AM
  NotAfter: 1/17/2026 3:10 AM
  Subject: CN=MyNewCA
  Serial: e4fcfcad23d16adef6f06bcacc5041
  9e500eac5e7a8b5545c92c8a27f1a96a0d223384
  Element.dwInfoStatus = CERT_TRUST_HAS_EXACT_MATCH_ISSUER (0x1)
  Element.dwInfoStatus = CERT_TRUST_IS_SELF_SIGNED (0x8)
  Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)

РЕДАКТИРОВАТЬ: после комментария CryptoGuys я решил немного углубиться в мой код генерации сертификата, чтобы убедиться, что подпись работает должным образом, и я действительно обнаружил проблему с кодом. Для тех, кто хочет выполнить аналогичную задачу - вот ссылка на сообщение, на котором я основывал свое создание CRL Bouncy Castle, и это помогло мне исправить логический недостаток, который у меня был; Создать файл CRL с помощью Bouncy Castle c# Справка Bouncy Castle CRL файл находится здесь; http://www.bouncycastle.org/wiki/display/JA1/X.509+Certificate+Revocation+Lists

Спасибо за помощь


person user2616550    schedule 18.01.2016    source источник
comment
Ошибка вполне объяснима: CRL не подписан тем же CA, что и сертификат в теме.   -  person Crypt32    schedule 18.01.2016
comment
@CryptoGuy Я думаю, вы можете сделать это ответом.   -  person mkl    schedule 18.01.2016