| ||||
| ||||
1. Открыл контейнер используя ваш провайдер с уже созданной ключевой парой. 2. Экспортировал из него публичный ключ через CryptExportPublicKeyInfo 3. Сваял структуру CERT_REQUEST_INFO т.е. 3.1 Заполнил Subject 3.2 Заполнил SubjectPublicKeyInfo 4. Завернул результат в Base64 5. Положил в файл. Я так понимаю, это и есть pkcs#10 %) т.е. очень на это надеюсь ;) Я теперь могу разобрать полученный результат, в обратную сторону, (на «подписывающей стороне») %) но… Мне, я так понимаю нужно теперь получить структуру CERT_INFO.. вот и вопросы. Подскажите, пожалуйста. Как теперь подписать и что именно, с какой структурой работать и в каком формате сохранять результат? | ||||
Ответы: | ||||
| ||||
Обычно запрос на сертификат обрабатывается на Центре сертификации (служба Microsoft Certification Authority из состава Win2000 Server). Программно это можно сделать, используя CryptoAPI. См. также наш пример http://www.cryptopro.ru/CryptoPro/test/sample2_0.zip (файл reqcert.c и др.) | ||||
| ||||
Спасибо за совет. Но вы меня неправильно поняли, отослав к рисунку №1. Хотелось бы понять последовательность действий при получении pkcs#10. О том, что это функционал ca ясно и работаю с cryptoapi. По глупости скачал ваш UC с вашего же фтп, а он не хочет устанавливаться, требуя еще и наличия M$ CA, вытянуть который у меня сейчас просто нет возможности. Вы можете написать последовательность разбора pkcs#10, подписания и формирования pkcs#7 своими словами с указанием используемых структур если не затруднит? | ||||
| ||||
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) | ||||
| ||||
Кирилл, большое вам спасибо… праздник у меня… подписывает… :) | ||||