| ||||
| ||||
Используется КриптоПро 3. Требуется передать на Solaris-машину сертификат и закрытый ключ.По некоторым причинам на Solaris-станции в данный момент недоступны USB и флоппи-дисковод, те передать ключ через дискету или eToken нельзя. Вопрос в следующем: как сделать это иным способом? Доступна только сеть. Сами сертификаты очень легко и удобно устанавливаются в хранилище утилитой storeman. | ||||
Ответы: | ||||
| ||||
Сделать контейнер на дискете (на другой машине) и записать папку с дискеты по сети на Solaris в место, где хранятся ключи, когда они делаются на Solaris в HDIMAGE (оно разное для ключей пользователя и компьютера). Для определения последнего сделайте другой контейнер на Solaris в HDIMAGE (csptest-ом или cryptcp) и поищите по имени контейнера. | ||||
| ||||
Сделал так. После запроса "key name" от storeman имя было нормально принято, сертификат помещен в хранилище. Но возникла следующая проблема. Вот такая конструкция возвращает 0,GetLastError() возвращает CRYPT_E_NOT_FOUND: CertGetCertificateContextProperty( CertCtx, CERT_KEY_PROV_INFO_PROP_ID, NULL,&cbData); Как я понимаю контейнер сертификат не "привязался" к контейнеру секретного ключа. Как сделать это в Solaris? Если эта конструкция некорректна, подскажите, пожалуйста, чем заменить? В итоге требуется получить имя ключевого контейнера, содержащего секретный ключ сертификата. С уважением, Сергей | ||||
| ||||
По-видимому, storeman не смог проставить ссылку на этот контейнер. Проверьте для начала работоспособность этого контейнера: csptest -keyset -info -container имя_контейнера (имя контейнера с префиксом HDIMAGE). Затем установите сертификат storeman-ом (с указанием полного имени контейнера - с тем же префиксом) | ||||
| ||||
Поскольку не помогло, решил описать процесс полностью Описание: 1. На Win-машине делаю сертификат так: csptest -makecert CN=NoFate -p 2 -ca Получаю сертификат. На дискете папка с ключами. Через панель управления копирую это контейнер с более удобным именем 2. Передаю все на Solaris-машину, где обе папки (оригинал и копию) с ключами в /var/CPROcsp/keys/root/ Копия названа CNTNR, оригинал - ff94481f.000. 3. Проверяю работоспособность контейнера ./csptest -keyset -info -container '\\.\HDIMAGE\CNTNR' - пишет, что все нормально, выдает информацию о ключах ./csptest -keyset -info -container '\\.\HDIMAGE\ полное имя контейнера, взятое с Win-системы. Так же отрабатывает корректно 4. Начинаю импорт сертификата ./storeman Далее u, так как нужно в хранилище пользователя Store:my File name:/cr.cer Key name: \\.\HDIMAGE\ здесь полное имя оригинального хранилища Key type: e (как и создавал) Результат - CertStore_Add failed, код не пишет, но сообщение - cpcsp:!CompleteUserKey!key-carrier_get_material fail! На каком этапе ошибаюсь и как исправлять? | ||||
| ||||
По-видимому, на контейнере есть пароль. К сожалению, стореман не сумеет его спросить, поэтому на время установки сертификата пароль надо снять. После установки пароль можно вернуть. Ещё вариант - неправильное имя контейнера. Используйте то имя, что выдаёт csptest -keyset -enum_containers -verifycontext -fqcn | ||||
| ||||
Спасибо! | ||||