Нужен ли нам корневой сертификат, установленный на машине всегда?

Я использую смарт-карту для аутентификации пользователя. У меня есть служба аутентификации (SecurityTokenService), которая обрабатывает логику аутентификации на сервере.

Я использую X509Certificate2.Verify() для проверки сертификата. Поскольку этот API может проверить, действителен или отозван сертификат, подключившись к Интернету и связавшись с центром сертификации (ЦС), нужен ли мне корневой сертификат на сервере?

Можем ли мы избежать использования корневого сертификата на нашем локальном компьютере? Или корневой сертификат всегда обязателен?


person Learner    schedule 11.04.2012    source источник


Ответы (1)


Я попробовал несколько вещей, и вот наблюдения:

  1. Во-первых, X509Certificate2.Verify() не проверяет, отозваны ли все сертификаты в цепочке. Из этого сообщения Я узнал, что метод Verify внутренне использует Функция Crypt32 CertVerifyCertificateChainPolicy. В документации к нему сказано, что он не выполняет проверку отзыва сертификата. Короче говоря, метод Verify просто проверяет, отозван ли сертификат, для которого он вызывается.

  2. Что касается корневого сертификата:

Надеюсь, это поможет тем, кто хочет узнать немного больше о проверке сертификатов в C#.

person Learner    schedule 11.04.2012
comment
Странный ответ CSharpLearner: в большинстве случаев вам не нужно явно проверять корневой сертификат, вам нужна цепочка, которой явно доверяют. Обычно вы доверяете только корневым сертификатам в системе, но вместо этого вы можете доверять любому промежуточному сертификату или сертификату конечного пользователя. Это не означает, что этот ответ неверен для этой конкретной платформы, но он определенно неверен для других платформ... - person Maarten Bodewes; 14.04.2012
comment
@owlstead: Спасибо за ваш комментарий; это полезно. То, что я разместил, является моим наблюдением после нескольких испытаний. Если на вашем компьютере присутствует действующий корневой сертификат, вы получите абсолютно правильную проверку без сообщений/статуса, таких как PartialChain. Сказав это, хочет ли кто-то проверить всю цепочку (включая корневой сертификат) или нет, это вопрос требований и выбора. Просто из любопытства: что, если сам корневой сертификат будет отозван? Или это что-то невозможное? Если нет, не должны ли мы также проверить корневой сертификат? - person Learner; 16.04.2012
comment
Обычно вы отзываете сертификаты только по серийному номеру; самозаверяющие (корневые) сертификаты обычно обрабатываются вне диапазона, включая отзыв сертификата. В хорошей структуре ЦС закрытый ключ корневого сертификата используется только время от времени для создания новых ЦС и для создания CRL для них время от времени. где-то. Таким образом, шансы на то, что он будет скомпрометирован, должны быть довольно низкими. - person Maarten Bodewes; 16.04.2012