08.09.2006 12:12:55Поле однозначно идентифицирующее сертификат Ответов: 11
Василий
Какое поле однозначно идентифицирует сертификат и как его получить?
 
Ответы:
08.09.2006 12:53:18Юрий Маслов
Серийный номер сертификата вместе с полем издателя. Т.е. два поля в совокупности однозначно идентифицируют сертификат. Все эти поля можно получить, например, через соотвествующие свойства объекта через CAPICOM
08.09.2006 13:35:27Василий
А с помощью CryptoApi его можно получить?
08.09.2006 16:28:53Юрий Маслов
Можно. Используйте структуру CERT_INFO. Как ее использовать: загляните в MSDN, задайте поиск по CERT_INFO и все узнаете...
08.09.2006 18:17:57Василий
Спасибо.А вообще, как принято идентифицировать пользователя по сертификату? Например, я получаю подписанное сообщение со вложенным сертификатом отправителя. Проверяю подпись, получаю контекст сертификата.Могу попробовать идентифицировать пользователя по полю subject, но ведь оно не уникально.Или вообще не принято по сертификату идентифицировать пользователя?
08.09.2006 18:24:19Юрий Маслов
Проверив подпись с использованием сертификата, Вы аутентифицируете его владельца, т.е. некого субъекта, владеющего соответствущим закрытым ключом подписи. Если сертификат в Вашей системе ассоциирован с некой учетной записью, то Вы уже можете считать, что аутентифицировали субъекта в системе. Но обычной практикой считается, что Вы должны показать сертификат подписи лицу, проверяющему эту самую подпись. Не пытайтесь делать утверждение, что за подписью скрывается вот этот человек. Это находиться в комптенции удостоверяющего центра, издавшего сертификат. Именно у него есть необходимая докаательная база по факту обладания сертификатом.
08.09.2006 18:32:59Василий
Ясно.Большое спасибо за исчерпывающий ответ!
11.09.2006 12:06:43Василий
Всё-таки возник ещё один вопрос:) Каков порядок проверки подписи документа? Понятно, что сначала проверяется сама подпись.А как затем проверить,достоверность и неотозванность сертификата?
11.09.2006 12:37:49Юрий Маслов
Да, сначала проверяете собствено совпадение кэша документа из подписи с подсчитанным кэшем (целость ЭЦП и документа). Потом проверяете, что сертификат подписи издан доверенным, "своим", центром сертификации (УЦ), а потом, что сертиифкаты в цепочке действительны. Действительны - это значит, что они не отозванные (аннулированы либо приостановлены), срок их действия уже начался и еще не окончен. Отозванность проверяете по CRL либо с использованием сервиса OCSP.
11.09.2006 13:01:08Василий
А есть ли где-то пример, где собрано использование всех эти функций.Просто везде показано как подписать и как проверить, а остальные функции- нет. Есть конечно их список на http://msdn.microsoft.com/library/default.asp?url=/library/en-us/seccrypto/security/certgetcrlfromstore.asp
Но довольно сложно понять в каком порядке и как их использовать.
11.09.2006 13:07:24Юрий Маслов
Возьмите MSDN и к нему PlatformSDK. Там есть примеры и для CAPICOM и для CryptoAPI. Также можете у нас с сайта взять проект в исходниках http://www.cryptopro.ru/cryptopro/products/csp/usage.htm
07.12.2006 18:17:30Александр Хилько
Ув. Василий! Судя по Вашим вопросам, моя задача во многом совпадает с Вашей. Можно ли с Вами связаться как то?
С уважением, Александр Хилько.
alexander.khilko@mail.ru