Почему этот сертификат X.509 считается недействительным? - PullRequest
8 голосов
/ 19 сентября 2008

У меня установлен данный сертификат на моем сервере. Этот сертификат имеет действительные даты и кажется совершенно действительным в оснастке 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 считает его недействительным! Почему?

Ответы [ 3 ]

7 голосов
/ 19 сентября 2008

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

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

5 голосов
/ 19 сентября 2008

Имеется ли сертификат эмитента в магазине X509? Сертификат действителен, только если он подписан кем-то, кому вы доверяете.

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

2 голосов
/ 19 сентября 2008

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

...