2010-08-31 1 views
7

Мне нужно написать инструмент, который проверяет, действительно ли сертификат X509 действителен или нет (input = cert path/subject и password). Как я могу это сделать? Я не знаю много о сертификатах ...Как проверить сертификат X509?

+0

Сертификат X.509 не защищен паролем (обычно его закрытым ключом является). Если у вас уже есть путь сертификации, большая часть работы выполняется (если вы доверяете доверенности доверия, к которой ведет этот путь сертификата). – Bruno

+0

@Bruno: правильная проверка сертификата «немного» больше, чем просто проверка подписей. Также необходимо проверить использование ключа, срок действия, ограничения пути. Затем необходимо проверить отзыв (используя OCSP и CRL). И так далее ... –

ответ

16

Посмотрите на X509Certificate2.Verify()

+2

Чтобы добавить, если вам нужна информация о том, почему сбой сертификата, вы можете вывести цепочку: http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509chain.aspx – Oliver

2

В целом, RFC 3280 содержит почти полные инструкции относительно выполнения валидации, однако эти инструкции очень нетривиальны. Кроме того, вам нужно будет прочитать RFC 2560 (OCSP) и реализовать клиент OCSP.

Для большинства задач вы найдете наш TElX509CertificateValidator component отлично подходит. Он проверяет пути сертификатов, отзыва CRL и OCSP (а также проверяет достоверность CRL и ответы OCSP). Он достаточно гибкий и достаточно мощный и позволяет выполнять дополнительные, более глубокие проверки на каждом шаге. Также этот компонент может работать как с хранилищами сертификатов Windows, так и с любыми другими сертификатами, цепочками сертификатов и хранилищами, которые могут храниться в файлах или в памяти.

+2

RFC 3280 был устарел RFC 5280: http://tools.ietf.org/html/rfc5280 – Bruno

+0

Хорошо, спасибо. –