| ||||
| ||||
Здравствуйте. Получил тестовый сертификат. Экспортировал в файл (DER). На Linux машине (redhat) установил (storeman -> "c" -> My -> /media/floppy/csptest.cer -> \\.\FAT12_0\csptest -> "e"). Сообщений об ошибках не было. Все пока делаю под root-ом. Вызов CryptAcquireCertificatePrivateKey(pСontext, CRYPT_ACQUIRE_SILENT_FLAG, NULL, &_provider, &dwKeySpec, &bCallerFree) приводит к ошибке 0x80092004 /usr/CPROcsp/bin/csptest -keyset -enum_containers -verifycontext -fqcn CSP (Type:71) v3.0.3303 KC1 Release OS:Linux CPU:IA32 FastCode:READY,ENABLED. CSP (Type:75) v3.0.3303 KC1 Release OS:Linux CPU:IA32 FastCode:READY,ENABLED. CryptAcquireContext succeeded.HCRYPTPROV: 134664256 \\.\FAT12_0\csptest OK. Total: [ErrorCode: 0x00000000] /usr/CPROcsp/bin/csptest -keyset -check -container \\.\FAT12_0\csptest CSP (Type:71) v3.0.3303 KC1 Release OS:Linux CPU:IA32 FastCode:READY,ENABLED. CSP (Type:75) v3.0.3303 KC1 Release OS:Linux CPU:IA32 FastCode:READY,ENABLED. ====CryptoPro CSP==== Validity of this evaluation version of CryptoPro CSP expires in 25 days. Что делать? You can get license from your dealer or contact Crypto-Pro (http://www.cryptopro.ru/). An error occurred in running the program. ../../../../mybuild/CSP/samples/csptest/ctkey.c:567:Error during CryptAcquireContext. Error number 8009001f (-2146893793). Program is terminating. | ||||
Ответы: | ||||
| ||||
Для начала исправьте в строке проверки контейнера - надо имя контейнера заключить в апострофы или кавычки: /usr/CPROcsp/bin/csptest -keyset -check -container '\\.\FAT12_0\csptest' или /usr/CPROcsp/bin/csptest -keyset -check -container "\\\\.\\FAT12_0\\csptest" И такой вопрос - на контейнере есть пароль? | ||||
| ||||
/usr/CPROcsp/bin/csptest -keyset -check -container '\\.\FAT12_0\csptest' CSP (Type:71) v3.0.3303 KC1 Release OS:Linux CPU:IA32 FastCode:READY,ENABLED. CSP (Type:75) v3.0.3303 KC1 Release OS:Linux CPU:IA32 FastCode:READY,ENABLED. CryptAcquireContext succeeded.HCRYPTPROV: 134664256 CryptGetProvParam succeeded. Provider name: Crypto-Pro GOST R 34.10-2001 KC1 CSP A crypto context has been acquired and The name on the key container is "csptest" No signature key is available. An exchange key exists. HCRYPTKEY: 0x80c9370 Check key passed. Everything is OK. A an exchange key exist in the "csptest" key container. Total: [ErrorCode: 0x00000000] Пароля на контейнере нет. | ||||
| ||||
Что интересно после /usr/CPROcsp/bin/csptest -keyset -check -container '\\.\FAT12_0\csptest' Удалил сертификат из хранилища, установил заново и все заработало. Но не понятно чем была вызвана ошибка. | ||||
| ||||
Судя по сообщению, не была найдена ссылка на контейнер ключа или контейнер был недоступен. Варианты: 1) при первоначальной установке сертификата не указали имя контейнера 2) в хранилище My несколько сертификатов, удовлетворяющих критерию при поиске сертификатов 3) сертификат ставили в хранилище My другого пользователя 4) контекст сертификата был получен вообще не из хранилища My 5) были проблемы с монтированием дискеты (требуется доступ на чтение-запись тому пользователю, под которым программа работает. CSP должен самостоятельно, когда требуется, монтировать дискету) | ||||