06.09.2006 11:25:05 | Как проверить подпись сертификата | | Ответов: 11 |
|
Василий | | |
|
Как проверить подпись сертификата? |
|
Ответы:
|
11.09.2006 14:08:00 | Русев Андрей |
|
Если сертификат сохранён в файл, то это можно сделать с помощью программы csptest. Для самоподписанных сертификатов:
csptest.exe -rc -cert selfsigned.cer
Для сертификатов, выпущенных некоторым УЦ, необходимо также указывать сертификат последнего:
csptest.exe -rc -der -cert user_cert.cer -der -issuer ca_cert.cer
Обратите внимание, что формат файла (DER/Base64) надо проставлять перед указанием файла. DER используется по умолчанию. |
|
11.09.2006 15:33:56 | Василий |
|
Это я знаю. А как это сделать в общем случае.Когда файла нет. А есть только контекст? |
|
11.09.2006 15:56:36 | Kirill Sobolev |
|
CryptVerifyCertificateSignatureEx |
|
11.09.2006 16:51:05 | Василий |
|
Спасибо.Вот ещё вопрос возник.
Если я создам цепочку сертификатов с помощью
CertGetCertificateChain
, будет ли это проверкой сразу и подписи и неотозванности сертификата? |
|
11.09.2006 17:34:41 | Kirill Sobolev |
|
Конечно |
|
11.09.2006 18:00:13 | Василий |
|
Допустим, я получил подписанный файл.
1.Проверил подпись
2. Проверил подпись и неотозванность сертификата (создав цепочку)
Как я понимаю, я лишь установил тот факт, что документ подписан именно этим сертификатом и сертификат достоверен. А можно мне как то однозначно установить подписавшее лицо, кроме как по полю subject( ведь оно не уникально)?
|
|
12.09.2006 10:08:42 | Kirill Sobolev |
|
Вообще именно Субъект и определяет владельца сертификата.
Установить это поможет тот УЦ, который этот сертификат выпустил. |
|
12.09.2006 10:26:25 | Василий |
|
А если субъект одинаков у двух сертификатов разных людей?
(ну скажем у них одинаковое ФИО) |
|
12.09.2006 12:12:41 | Kirill Sobolev |
|
Значит в поле Субъект должны быть указаны дополнительные сведения - организация, должность, адрес и т.д. |
|
12.09.2006 12:17:58 | Василий |
|
Понятно. А как извлечь эти дополнительные поля? Для поля Namе в Subject ceotcndetn функция CertGetNameString, а для остальных? |
|
12.09.2006 12:58:21 | Kirill Sobolev |
|
Разные есть способы
можно воспользоваться CertNameToStr и разобрать получившуюся строку, а можно CryptDecodeObject и потом работать со структурой CERT_NAME_INFO |
|