| ||||
| ||||
Устнановка сертификата веб-сервера (в формате Base 64) в хранилище my пользователя, от имени которого будет осуществляться его запуск. При выполнении команды /usr/CPROcsp/bin/cryptcp -instcert /home/my/certnew.cer и после выбора контейнера происходит следующая ошибка: =============================================================== CryptCP 3.00 (c) "Crypto-Pro", 2002-2003. Command prompt Utility for data protection. -instcert - Install issued certificate from PKCS #7 file. Please, choose container (type its number and press [ENTER]). #1: tlsserver Number:Error: Объект или свойство не найдено. (0x80092004) [ErrorCode: 0x80092004] ================================================================ в storeman до этого из под root в хранилище root был добавлен сертификат в DER кодировке полученный из тестового УЦ. ОС: RedHat 9.0 версия CSP 3.0 От чего может возникать подобная ошибка и какие возможны способы ее устранения? | ||||
Ответы: | ||||
| ||||
Ответил на email. | ||||
| ||||
Аналогичная проблема. Как ее решить? | ||||
| ||||
Можно подробнее - 1. Как делался запрос на сертификат? Т.е. с этой ли машины, если да - под этим ли пользователем, если да - какой утилитой, если это cryptcp - с какими параметрами? 2. Как запрос обрабавтывался, в какой кодировке готовый сертификат? 3. Установлен ли сертификат ЦС? | ||||
| ||||
1. Запрос делался на этом же компьютере, этим же пользователем, с помощью утилиты cryptcp: cryptcp -creatrqst /tmp/testpostserver1.req -cont "\\\\.\\hdimage\\testpostserver1" -dn "CN=testpostserver" -provtype 75 -exprt -both -km -certusage "1.2.643.2.2.34.2" 2. Запрос обрабатывался в АРМ-е администратора УЦ КриптоПро. Сертификат в base64, пробовал и в DER кодировке. 3. Сертификат ЦС установлен. Сертификат пытаюсь установить с помощью вот такой команды: /usr/CPROcsp/bin/cryptcp -instcert -provtype 75 -km -dm /tmp/testpostserver1_b64.cer | ||||
| ||||
Ясно, спасибо. Добавьте в команду установки имя контейнера (с префиксом) | ||||
| ||||
Я уже пробовал так делать. /usr/CPROcsp/bin/cryptcp -instcert -provtype 75 -cont "\\\\.\\hdimage\\testpostserver1" -km -dm /tmp/testpostserver1_b64.cer Ошибка та же. | ||||
| ||||
А это точно контейнер компьютера (а не пользователя)? Т.е. он перечисляется при: csptest -keyset -enum_containers -verifycontext -fqcn -machine ? | ||||
| ||||
Точно. ./csptest -keyset -enum_containers -verifycontext -fqcn -machine 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 \\.\HDIMAGE\testpostserver1 OK. Total: [ErrorCode: 0x00000000] | ||||
| ||||
И для контроля что выводит: /usr/CPROcsp/bin/csptest -keyset -check -cont "\\\\.\\hdimage\\testpostserver1" -machine ? Требуется ли пароль? | ||||
| ||||
Пароль не требуется. /usr/CPROcsp/bin/csptest -keyset -check -cont "\\\\.\\hdimage\\testpostserver1" -machine 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 30 days. You can get license from your dealer or contact Crypto-Pro (http://www.cryptopro.ru/). 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 "testpostserver1" No signature key is available. An exchange key exists. HCRYPTKEY: 0x808dbc0 Check key passed. Everything is OK. A an exchange key exist in the "testpostserver1" key container. Total: [ErrorCode: 0x00000000] | ||||
| ||||
Всё хорошо. Такой вопрос - с помощью storeman не пробовали установить? | ||||
| ||||
Пробовал. ./storeman c[r]l, [c]ert, [u]ser, [q]uitc Store:my my [l]ist, [d]el, [e]xtract, [a]dd, [b]ack, q[uit]l my [l]ist, [d]el, [e]xtract, [a]dd, [b]ack, q[uit]a File name:/tmp/testpostserver1.cer Key name ([s]kip):"\\\\.\\hdimage\\testpostserver1" Key type: [s]ignature or key[e]xchange:e CertStore_Add failed. | ||||
| ||||
Как раз там лучше без кавычек и без удвоения слешей | ||||
| ||||
То же самое: storeman c[r]l, [c]ert, [u]ser, [q]uitc Store:my my [l]ist, [d]el, [e]xtract, [a]dd, [b]ack, q[uit]l my [l]ist, [d]el, [e]xtract, [a]dd, [b]ack, q[uit]a File name:/tmp/testpostserver1.cer Key name ([s]kip):\\.\hdimage\testpostserver1 Key type: [s]ignature or key[e]xchange:e CertStore_Add failed. my [l]ist, [d]el, [e]xtract, [a]dd, [b]ack, q[uit]l my [l]ist, [d]el, [e]xtract, [a]dd, [b]ack, q[uit]q | ||||
| ||||
Ок, проверьте права на чтение-запись для пользователя, под которым Вы запускаете на само хранилище (как папку): /var/CPROcsp/users/stores/my | ||||
| ||||
Я запускаю под root. В каталоге stores нет папки my, есть только файл my.sto. Содержимое папки stores: drwxrwxrwx 2 root root 128 2007-10-01 11:51 . drwxrwxrwx 6 root root 176 2007-10-02 12:13 .. -rw-r--r-- 1 root root 20 2007-10-02 12:24 my.sto -rw-r--r-- 1 root root 0 2007-10-01 11:51 request.sto -rw-r--r-- 1 root root 891 2007-10-01 16:59 root.sto | ||||
| ||||
Извиняюсь, конечно же, my.sto. Для контроля давайте так: сделайте новый запрос /usr/CPROcsp/bin/cryptcp -creatrqst /tmp/testpostserver2.req -cont "\\\\.\\hdimage\\testpostserver2" -dn "CN=testpostserver" -provtype 75 -exprt -both -km -certusage "1.2.643.2.2.34.2" и установите сертификат с указанием имени контейнера сразу: /usr/CPROcsp/bin/cryptcp -instcert -provtype 75 -cont "\\\\.\\hdimage\\testpostserver2" -km -dm /tmp/testpostserver2_b64.cer | ||||
| ||||
Не удалось. /usr/CPROcsp/bin/cryptcp -instcert -provtype 75 -cont "\\\\.\\hdimage\\testpostserver2" -km -dm /tmp/testpostserver2_b64.cer CryptCP 3.00 (c) "Crypto-Pro", 2002-2003. Command prompt Utility for data protection. -instcert - Install issued certificate from PKCS #7 file. Error: ������ ��� �������� �� �������. (0x80092004) [ErrorCode: 0x80092004] | ||||
| ||||
Ясно. Значит, это ошибка при работе с хранилищем компьютера в утилитах storeman и cryptcp из состава CSP 3.0. В версии 3.6 storeman значительно переделан, и имеется под названием certmgr. Там ошибок быть не должно. | ||||
| ||||
Можно ли отдельно установить утилиту certmgr из дистрибутива 3.6 без переустановки КриптоПро 3.0 и будет ли она корректно работать? Очень не хочется сейчас переустанавливать КриптоПро на сервере. Если можно, то где ее можно взять. | ||||
| ||||
Довольно сомнительно, что её можно заставить работать в рамках CSP 3.6. Такой вопрос - а насколько обязательно контейнер и сертификат ставить именно в хранилище компьютера? | ||||
| ||||
В принципе не обязательно именно в хранилище компьютера их ставить. Нужно чтобы 2 разных пользователя имели доступ к одному и тому же контейнеру. Например, web-сервер должен иметь доступ (т.е. пользователь apache) и скрипт, который запускается из командной строки (под другим пользователем). Как этого добиться? Я пробовал скопировать контейнер из каталога одного пользователя в каталог другого, но у меня не получилось установить сертификат для второго пользователя с привязкой к контейнеру с закрытым ключем. Как это можно сделать? И как можно удалить созданные контейнеры? Достаточно удалить папку с контейнером? | ||||
| ||||
Удалить можно так: csptest -keyset -deletekeyset -container имя Скопировать можно в папку каждого пользователя /var/CPROcsp/keys/Имя_пользователя Для пользовательских контейнеров должен работать storeman. | ||||