Почему этот сертификат X.509 считается недействительным?

StackOverflow https://stackoverflow.com/questions/98074

  •  01-07-2019
  •  | 
  •  

Вопрос

У меня на сервере установлен данный сертификат.Этот сертификат имеет действительные даты и кажется совершенно действительным в оснастке MMC сертификатов Windows.

Однако когда я пытаюсь прочитать сертификат, чтобы использовать его в HttpRequest, я не могу его найти.Вот используемый код:

    X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
    store.Open(OpenFlags.ReadOnly); X509Certificate2Collection col =
    store.Certificates.Find(X509FindType.FindBySerialNumber, "xxx", true);

xxx это серийный номер;Аргумент true означает «только действительные сертификаты».Возвращенная коллекция пуста.

Странно то, что если я пройду false, указывающий на допустимость недействительных сертификатов, коллекция содержит один элемент — сертификат с указанным серийным номером.

В заключение:сертификат кажется действительным, но Find метод считает его недействительным!Почему?

Это было полезно?

Решение

Попробуйте проверить цепочку сертификатов с помощью X509Цепь сорт.Это может точно сказать вам, почему сертификат не считается действительным.

Как предположил Эриксон, ваш X509Store может не иметь доверенного сертификата ЦС в цепочке.Если вы использовали OpenSSL или другой инструмент для создания собственного самозаверяющего центра сертификации, вам необходимо добавить общедоступный сертификат этого центра сертификации в X509Store.

Другие советы

Присутствует ли сертификат эмитента в X509Store?Сертификат действителен только в том случае, если он подписан кем-то, кому вы доверяете.

Это сертификат реального центра сертификации или вы подписали его самостоятельно?Инструменты подписи сертификатов, часто используемые разработчиками, такие как OpenSSL, по умолчанию не добавляют некоторые важные расширения.

Я считаю, что сертификаты x509 привязаны к конкретному пользователю.Может ли он быть недействительным, потому что в коде вы обращаетесь к нему от имени другого пользователя, а не от того, для которого он был создан?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top