| ||||
| ||||
Пользователь имеет сертификат и соотвествующие ключи на носителе eToken. Можно ли подписать документ этими ключами без предварительной инсталляции сертификата в хранилище? Ведь КриптоПро позволяет при установке нового сертификата браузить носители и хранилища. Так почему я не могу найти и тут же использовать этот сертификат? использовать ключи для ЭЦП без предварительной инсталляции сертификата | ||||
Ответы: | ||||
| ||||
Добрый день! Мной при работе с eToken была установлена довольно интересная фишечка. Если Вы по коду выполняет открытие хранилище с уже установленным eToken ключом - то "всасывание" сертификатов (т.е. их установка в локальное хранилище) происходит автоматически. | ||||
| ||||
Николай, я пытался открыть хранилище на eToken, но не нашёл как это сделать. CAPICOM не позволяет указать тип такого хранилища. Могли бы показать пример кода? | ||||
| ||||
могу подробней. Итак - у меня обычный USB eToken с созданным где-то на другой машине закрытым ключом и там же был установлен сертификат. Переносим ключ на другой компьютер, подключаем. В коде делаем следующее: HCERTSTORE m_hSystemStore = CertOpenSystemStore(NULL, "MY"); Все - смотрим в mmc - сертификат установлен вместе с закрытой связью. Но это работает только при следующих условиях: 1. Сертификат для этого ключа раньше не устанавливался. 2. Ключ вставлен перед выполнением функции открытия хранилища (и "засасывание" выполняется только один раз). Если не доставая ключ удалить сертификат из хранилища и попробовать его переоткрыть - повторно сертификат не установится. Только после перетыкания ключа (достали - поставили назад) 3. Отсутсвует smart card в ридере. С смарт картами вообще диалог отдельный - они как-то странно блокируют нормальную работу еТокена (чего только стоит невозможность просмотреть нормально информацию по ключу с использованием стандартной утилиты еТокена). | ||||
| ||||
Уточнение. Это работает для сертификатов RSA. Для ГОСТ - только при условии, что используется "КриптоПро CSP 3.0" и "КриптоПро WinLogon". | ||||
| ||||
У нас нет версии 3.0 и WinLogon не используется. Значит мне это не подойдёт. Да и задача, всё-таки, немного другая. Мне, вообще, не хотелось бы устанавливать сертификат пользователя на компьютер. Открываем панель управления - КриптоПро - вкладка Сервис - кнопка Просмотреть сертификаты в хранилище - кнопка Обзор. Открывается список хранилищь на разных носителях. Я выбираю хранилище и мне показывается оттуда сертификат. Вопрос: каким образом мне самому открыть такой диалог и вернуть в мой код выбранный таким образом сертификат? Это возможно? Или это закрытые методы? | ||||
| ||||
Конечно возможно. Стандартные функции CryptoAPI: CryptAcquireContext, CryptGetUserKey, CryptGetKeyParam(...KP_CERTIFICATE...) Описание см. в MSDN и в http://www.cryptopro.ru/CryptoPro/products/csp/20/csp-2-0.chm | ||||
| ||||
Для того, чтобы корректно выполнить CryptAcquireContext надо знать имя контейнера, так? Хотя если необходимо просто просмотреть сертификаты - этого должно быть достаточно. не смог просмотреть chm файл, указанный Вами в предыдущем ответе. Выводит: Действие отменено Internet Explorer не удается подключиться к запрошенной веб-странице. Возможно, страница временно недоступна. | ||||
| ||||
Василий, мой код исполняется на IE и написан на JScript. Т.о. я могу использовать только CAPICOM. | ||||
| ||||
По поводу http://www.cryptopro.ru/CryptoPro/products/csp/20/csp-2-0.chm Скачайте его на диск, нажмите на нём правой кнопкой мыши - Свойства - Разблокировать. После этого будет запускаться. Это злой Microsoft ведёт борьюу с открытием и передачей файлов *.chm по сети (типа, небезопасно) По поводу имени контейнера - если не хотите ставить сертификат в хранилище - то имя надо знать (или получить перечислением). | ||||
| ||||
Владимиру. Может, проще попросить пользователя в панели управления компьютером открыть КриптоПро CSP - Сервис - Просмотреть сертификаты в контейнере - Обзор -...- Свойства - Установить сертификат? Ведь, для успешной работы, нужно много чего сделать на компьютере пользователя (не средствами js): установить CSP, установить eToken RTE, установить модуль поддержки "Etoken для КриптоПро CSP 2.0", добавить eToken как считыватель и ещё надо просить согласие пользователя на установку корневого сертификата ЦС для того, чтобы выразить доверие всем выдвнным на этом ЦС сертификатам. | ||||