18.04.2005 14:38:29Порядок подписывания сертификатов… Ответов: 4
Альт
1. Открыл контейнер используя ваш провайдер с уже созданной ключевой парой.
2. Экспортировал из него публичный ключ через CryptExportPublicKeyInfo
3. Сваял структуру CERT_REQUEST_INFO т.е.
3.1 Заполнил Subject
3.2 Заполнил SubjectPublicKeyInfo
4. Завернул результат в Base64
5. Положил в файл.
Я так понимаю, это и есть pkcs#10 %) т.е. очень на это надеюсь ;)

Я теперь могу разобрать полученный результат, в обратную сторону, (на «подписывающей стороне») %) но… Мне, я так понимаю нужно теперь получить структуру CERT_INFO.. вот и вопросы.
Подскажите, пожалуйста. Как теперь подписать и что именно, с какой структурой работать и в каком формате сохранять результат?
 
Ответы:
18.04.2005 15:01:08Василий
Обычно запрос на сертификат обрабатывается на Центре сертификации (служба Microsoft Certification Authority из состава Win2000 Server).
Программно это можно сделать, используя CryptoAPI. См. также наш пример http://www.cryptopro.ru/CryptoPro/test/sample2_0.zip (файл reqcert.c и др.)
18.04.2005 16:05:10Альт
Спасибо за совет. Но вы меня неправильно поняли, отослав к рисунку №1. Хотелось бы понять последовательность действий при получении pkcs#10.
О том, что это функционал ca ясно и работаю с cryptoapi.
По глупости скачал ваш UC с вашего же фтп, а он не хочет устанавливаться, требуя еще и наличия M$ CA, вытянуть который у меня сейчас просто нет возможности.
Вы можете написать последовательность разбора pkcs#10, подписания и формирования pkcs#7 своими словами с указанием используемых структур если не затруднит?
19.04.2005 9:39:59Kirill Sobolev
MS CA входит в дистрибутив W2k Server, скачивать его не надо. Называется "Службы сертификации".
Последовательность при разборе:
1) Разбираете запрос CryptDecodeObject(X509_CERT, X509_CERT_REQUEST_TO_BE_SIGNED)
2) Проверяете подпись PKCS10 (CryptVerifyCertificateSignature)
3) Заполняете структуру CERT_INFO открытым ключем и DN из запроса.
4) По желанию добавляете какие-нибудь расширения/атрибуты
5) Подписываете CERT_INFO ключем центра или тем ключем, который был в запросе (если сертификат самоподписанный) (CryptSignAndEncodeCertificate)
22.04.2005 14:20:37Альт
Кирилл, большое вам спасибо… праздник у меня… подписывает… :)