PKI: процедура проверки статуса отзыва сертификата и его настройка - PullRequest
1 голос
/ 28 июля 2011

Добрый день!

В моем веб-приложении asp.net мне нужно проверить входящие цифровые подписи файлов.Я делаю это, вызывая:

SignedCms.CheckSignature (false) или SignerInfo.CheckSignature (false) (C #).

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

Сертификаты входящих подписчиков могут содержать большое количество CA.Таким образом, сертификат подписавшего может включать или не включать ссылки на службу OCSP CA или службу CRL CA.

Я хочу, чтобы система проверяла отзыв таким образом:

ЕСЛИ сертификат имеет ссылку на OCSP CAПосле этого веб-служба отправляет запрос в CA. В сертификате ELSE IF есть ссылка на онлайновый CRL-сервис CA, система загружает CRL и использует его. ELSE использует локальный CRL.

Не могли бы вы ответить на мои вопросы?:

  1. как (где) я могу найти системные настройки, которые описывают необходимое поведение?(Является ли это поведение изменяемым или исправленным?)
  2. Если сертификат имеет ссылку на веб-службу CRL CA, я должен периодически загружать и устанавливать CRL CA по сценарию, или я могу рассчитывать на загрузку системы и использовать ихавтоматически, когда для проверки требуется CRL?

Спасибо.

Ответы [ 2 ]

1 голос
/ 28 июля 2011

Процедура описана в RFC 5280 и очень сложна.Вкратце, вы делаете следующее:

  1. Для данного сертификата проверьте его подпись, срок действия и использование ключа
  2. Проверьте сертификат по CRL.
  3. Проверьтесертификат против OCSP
  4. Для каждого сертификата, обнаруженного во время проверки CRL и / или OCSP, выполните шаги 1-3 (это, в свою очередь, может включать несколько проверок CRL и OCSP).

Я не упоминаю проверки политики, которые здесь очень сложны.

Мне потребовалось около месяца, чтобы внедрить средство проверки сертификатов для нашей библиотеки SecureBlackbox (но у нас есть все самостоятельно, от клиентов CRL и OCSP до управления этими CRL).Если вы хотите выполнить проверку сертификата с помощью средств ОС, вы должны искать существующую функцию, которая сделает эту работу за вас.

0 голосов
/ 29 июля 2011

Вы можете найти полезную информацию о получении внутренних CRL, более конкретно о кэшировании CRL crl-caching-in-windows-and-little-bit

Есть два подхода, о которых я здесь думаю, когда windows cryptoAPI позаботится об автоматической отмене отзыва, включая кеширование. Но проблема здесь в том, что cryptoAPI будет искать сервер CA только тогда, когда истекает текущий CRL в кэше. Таким образом, существует трудность поддержания свежести CRL. Но если частота публикации CRL вашего ЦС составляет ежедневно, вам может не понравиться этот подход использования CertVerifyRevocation , вызова функции из окон с соответствующей конфигурацией для некоторых приложений.

Второй подход заключается в загрузке и установке CRL с сервера CA и использовании CertFindCertificateInCRL для проверки. Ваше приложение-загрузчик CRL может быть настроено на обновление CRL через заданный интервал времени. Это будет работать, если ЦС публикует только Базовый CRL, поскольку вы получаете полный список отозванных сертификатов при каждой загрузке своего CRL. Я не знаю ответа, что произойдет, если ЦС публикует Delta CRL и Базовый CRL с меньшей частотой.

...