Установка личного сертификата с рутокен с кириллическим контейнером

SibUrsus

New member
Сообщения
26
#1
Здравствуйте.
Прошу помощь советом.
Дано: ПК Крафтвей 16 шт
Свежеустановленная Астра Воронеж 1.7.3
Крипто Про 4.0.9963 1 шт
Rutoken S 1 шт
ЭП выпущенная УЦ Федерального Казначейства 1 шт
Перепуганый нуб, второй раз в жизни видящий линукс - 1 шт

Хорошо ли плохо ли, но ФК сделало контейнер и файл .cer по русски. На вики есть сноска:
"При наличии кириллических символов в имени ключевого контейнера для дальнейшей работы с таким контейнером необходимо использовать его уникальный идентификатор. Получить уникальные идентификаторы ключевых контейнеров можно командой:
/opt/cprocsp/bin/amd64/csptest -keys -enum -verifyc -fqcn -un"
И дальше тема не раскрыта, хорошо бы еще скриншот, где бы было выделено искомое. Вот что у меня:

Код:
tashoper1@TASH-OKNO01:~$ /opt/cprocsp/bin/amd64/csptest -keys -enum -verifyc -fqcn -un
CSP (Type:80) v4.0.9019 KC1 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 14186403
\\.\Aktiv Co. Rutoken S 00 00\������� ��������� ������������ 330175041|\\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f\0B00\C1B2
OK.
Total: SYS: 0,010 sec USR: 0,050 sec UTC: 0,770 sec
[ErrorCode: 0x00000000]
Что в моём случае является идентификатором? rutoken_2a78554f ?
Как быть с файлом сертификата?
Как будет выглядеть итоговая команда?
/opt/cprocsp/bin/amd64/csptest -keys -cont 'rutoken_2a78554f ' -keytype exchange -impcert /mnt/Леонова Анастасия ВладимировнаА.cer
 

Карл

New member
Сообщения
493
#2
вопросы по рутокену наверно лучше задать на ихнем форуме
имя файла контейнера ведь можно переименовать и\или окавычить при наличии пробелов в имени
 

SibUrsus

New member
Сообщения
26
#3
имя файла контейнера ведь можно переименовать
В токене??
вопросы по рутокену наверно лучше задать на ихнем форуме
А они то при чём? В оффтопике всё идеально работало, я и знать не знал о таких граблях.
 

Карл

New member
Сообщения
493
#4
1. про имя имел ввиду команду ... /mnt/Леонова Анастасия ВладимировнаА.cer без кавычек
2. железяка специфичная, ябы вопрошал ни их форуме, там и отвечают чаще и грамотнее касательно своих поделок
 

MickM

New member
Сообщения
211
#5
\\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f\0B00\C1B2
Вы уже получили уникальное наименование контейнера - его и используйте;

/mnt/Леонова Анастасия ВладимировнаА.cer
Пробелы либо экранируйте, либо указывайте путь в кавычках;

Если Ваша задача состоит только в установке сертификата в системное хранилище uMy и связки его с контейнером, то достаточно выполнить следующую команду от имени пользователя:
Код:
/opt/cprocsp/bin/amd64/csptestf -absorb -certs
 

SibUrsus

New member
Сообщения
26
#6
Вы уже получили уникальное наименование контейнера - его и используйте;
Т.е полный идентификатор rutoken_2a78554f\0B00\C1B2 ?


Пробелы либо экранируйте, либо указывайте путь в кавычках;
Я честно признался что около нулевой чайник, что значит "экранировать"?

Если Ваша задача состоит только в установке сертификата в системное хранилище uMy и связки его с контейнером, то достаточно выполнить следующую команду от имени пользователя:
Код:
/opt/cprocsp/bin/amd64/csptestf -absorb -certs
На практическом уровне, да, это работа с локальными ИС через КриптоПро ЭЦП Browser plug-in и реже с ЕСИА через ifc plugin от Ростелекома
 

MickM

New member
Сообщения
211
#7
Это полный путь к контейнеру:
Код:
"\\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f\0B00\C1B2"
что значит "экранировать"?
Что-то типа такого:
/mnt/Леонова\ Анастасия\ ВладимировнаА.cer
или
"/mnt/Леонова Анастасия ВладимировнаА.cer"
Вы команду выполнили, желаемого достигли?
 

SibUrsus

New member
Сообщения
26
#8
Код:
mfcadmin@TASH-OKNO01:~$ /opt/cprocsp/bin/amd64/csptest -keys -cont "\\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f\0B00\C1B2" -keyty
pe exchange -impcert /mnt/"Леонова Анастасия Владимировна.cer"
CSP (Type:80) v4.0.9019 KC1 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
An error occurred in running the program.
/dailybuildsbranches/CSP_4_0/CSPbuild/CSP/samples/csptest/ctkey.c:1004:AcquireContext("\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f
\0B00\C1B2")
Error number 0x8009001f (2148073503).
Неправильный параметр набора ключей.
Total: SYS: 0,000 sec USR: 0,010 sec UTC: 0,010 sec
[ErrorCode: 0x8009001f]
mfcadmin@TASH-OKNO01:~$
 

SibUrsus

New member
Сообщения
26
#9
Код:
mfcadmin@TASH-OKNO01:~$ /opt/cprocsp/bin/amd64/csptest -keys -cont "\\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f\0B00\C1B2" -keytype exchange -impcert /mnt/Леонова\ Анастасия\ Владимировна.cer
CSP (Type:80) v4.0.9019 KC1 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
An error occurred in running the program.
/dailybuildsbranches/CSP_4_0/CSPbuild/CSP/samples/csptest/ctkey.c:1004:AcquireContext("\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f\0B00\C1B2")
Error number 0x8009001f (2148073503).
Неправильный параметр набора ключей.
Total: SYS: 0,000 sec USR: 0,010 sec UTC: 0,010 sec
[ErrorCode: 0x8009001f]
 

SibUrsus

New member
Сообщения
26
#10
Без кавычек

mfcadmin@TASH-OKNO01:~$ /opt/cprocsp/bin/amd64/csptest -keys -cont \\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f\0B00\C1B2 -keytype
exchange -impcert /mnt/Леонова\ Анастасия\ Владимировна.cer
WARNING: Useless positional arguments found: "Co.", "Rutoken", "S", "00", "00SCARDrutoken_2a78554f0B00C1B2"
/opt/cprocsp/bin/amd64/csptest -keyset [<globals>] [<command>] [<options>]
CSPTEST key set manipulation options:
<globals>:
-silent Do not display any user interface
--cplevel[=<number>] Apply 0/1/2/3 as <number> to use Crypt/CP/CPC/Emu interfaces
--cpdll <Dll> Apply full path to dll as <Dll>
-threads <N> Create N threads
-passes <K> Make K passes in each thread
-provider <name> [optional] specify provider name or next abbreviation:
cp2001 ph2001
-provtype <type> [optional] specify provider type or next abbreviation:
gost2001
<commands>:
-newkeyset Create new container and a key set
-addkeypair Create new keypair in existing container
-deletekeyset Delete key set
-info Show provider's info
--check[=<mask>] Check container. Use bit mask (all tests by default):
1: remask check
2: keys and certs check
4: header check
8: cert license
-hash <hashalg> Hash in file data with hash
(SHA1, SHA256, SHA384, SHA512, MD5, MD2,
GOST12_256, GOST12_512, GOST94_256 - default)
-sign <hashalg> Sign in file with private key and hash
(SHA1, SHA256, SHA384, SHA512, MD5, MD2,
GOST12_256, GOST12_512, GOST94_256 - default)
-verify <hashalg> Verify file with signature file on imported key with hash
(SHA1, SHA256, SHA384, SHA512, MD5, MD2,
GOST12_256, GOST12_512, GOST94_256 - default)
-pkverify <alg> Verify file with signature file on private key with hash
(SHA1, SHA256, SHA384, SHA512, MD5, MD2,
GOST12_256, GOST12_512, GOST94_256 - default)
-display Send hashed data into Reader/Carrier
Working only with GOST hash algorithm
-enum_containers Enumerate containers
-crc Calculate CRC16 of container name string
-encryptioncarrier Set container encryption carrier
-export <file> Export public key blob into file
-expcert <file> Save key certificate from container into file
-impcert <file> Load key certificate from file into container
-makecert Make self signed cert and put it in container
-fmakecert <file> Make self signed cert and put it in file
-loadext <file> Load container extensions from PKCS#7 file, keytype option
selects signature or exchange trust store extension
-saveext <file> Save container extensions to PKCS#7 file
-cleanext <OID> Clean out container extension
"*" means delete all extensions
-noext Do not show info about container extensions
-stress CP{Acquire/Relase}Context
-help Print this help
<options>:
-verifycontext Open context for verification only
-container <name> Specify container name. Use "default" for select dialog
-unique Output unique container name instead name
-fqcn Output FQCN (Fully Qualified Container Name)
-machinekeyset Open HKLM
-exportable Generate exportable key
-protected Generate protected key
-pattern <string> Substring in unique container name
-keytype <type> Key type for creating key and certificate, signing or
exporting public key, intended signature verifying
on private key: signature, exchange, uec, none.
Default: signature and exchange
-hashout <file> Out hash value into filename
-in <file> Data filename to be signed, verified or hashed
-out <file> Save signature in file
-signature <file> In/out signature file name
-certificate <file> Cert file to import public key from
-import <file> Import public key from file (see also: "-pubkey" parameter)
-pubkey <file> Additional public key to be used in ImportKey() as hPubKey
(exchange private key will be used with import as hPubKey
if no file specified and keytype is exchange)
-hard_rng Use hardware RNG
-length <keylen> Set key length to 1024 / 512 bits
-password <pin> Open container with this password
-nullpasswd Set NULL password (i.e. clean from cache)
-counter <num> Number of Acquire/Release context iterations
-waitcarrier <t> Wait t seconds before releasing
encryption carrier container
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,000 sec
[ErrorCode: 0x00000001]
 

SibUrsus

New member
Сообщения
26
#11
4 попытка,
mfcadmin@TASH-OKNO01:~$ /opt/cprocsp/bin/amd64/csptest -keys -cont \\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f\0B00\C1B2 -keytype
exchange -impcert /mnt/"Леонова Анастасия Владимировна.cer" результат такой же как в предыдущем посте.
 

MickM

New member
Сообщения
211
#12
Чего Вы этими командами хотите добиться?
Не понятно.

Пробуйте так:
Код:
/opt/cprocsp/bin/amd64/certmgr -inst -store uMy -file "/mnt/Леонова Анастасия Владимировна.cer" -cont "\\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f\0B00\C1B2"
Если на контейнере имеется ПИН, то добавляйте параметр с указанием оного, например:
Код:
-pin 0987654321
 

SibUrsus

New member
Сообщения
26
#13
Ох, блин, личный сертификат надо же не от админа а от пользователя ставить?? (хоть стреляйся, от бессилия и злости, ну нельзя так... какую дичь мы исполняем, как котята слепые тычемся)
 

SibUrsus

New member
Сообщения
26
#15
Чего Вы этими командами хотите добиться?
Не понятно.

Пробуйте так:
Код:
/opt/cprocsp/bin/amd64/certmgr -inst -store uMy -file "/mnt/Леонова Анастасия Владимировна.cer" -cont "\\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f\0B00\C1B2"
Если на контейнере имеется ПИН, то добавляйте параметр с указанием оного, например:
Код:
-pin 0987654321
В учетке пользователя:

Код:
tashoper1@TASH-OKNO01:~$ /opt/cprocsp/bin/amd64/certmgr -inst -store uMy -file "/mnt/Леонова Анастасия Владимировна.cer" -cont "\\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f\0B00\C1B2" -pin 12345678
Certmgr 1.1 (c) "Crypto-Pro",  2007-2018.
program for managing certificates, CRLs and stores

Error(0x2). Cannot open file
        at /dailybuildsbranches/CSP_4_0/CSPbuild/CSP/src/certmgr/certmgr.cpp:3494

The system cannot find the file specified.
[ErrorCode: 0x00000002]
 

MickM

New member
Сообщения
211
#16
Файл сертификата вычитывается корректно?

Таким способом пробовали?
Самый простой способ для новичков - установит и свяжет сертификаты во всех доступных контейнерах:
Код:
/opt/cprocsp/bin/amd64/csptestf -absorb -certs
Ещё, как один из вариантов, не указывать контейнер, а запрашивать его параметром -ask-cont, тогда, например, так:
Код:
/opt/cprocsp/bin/amd64/certmgr -inst -store uMy -ask-cont -file 'путь_к_файлу_сертификата'
Давайте с кавычками разберёмся - заменим их на апострофы:
Код:
/opt/cprocsp/bin/amd64/certmgr -inst -store uMy -file /mnt/'Леонова Анастасия Владимировна.cer' -cont '\\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f\0B00\C1B2'
или так:
Код:
/opt/cprocsp/bin/amd64/certmgr -inst -store uMy -file /mnt/Леонова\ Анастасия\ Владимировна.cer -cont '\\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f\0B00\C1B2'
или так (тут просто укажем токен, а не контейнер):
Код:
/opt/cprocsp/bin/amd64/certmgr -inst -store uMy -file /mnt/Леонова\ Анастасия\ Владимировна.cer -cont '\\.\Aktiv Co. Rutoken S 00 00'
 
Последнее редактирование:

SibUrsus

New member
Сообщения
26
#17
Файл сертификата вычитывается корректно?
Код:
tashoper1@TASH-OKNO01:~$ /opt/cprocsp/bin/amd64/csptestf -keyset -container '\\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f\0B00\C1B2' -info
CSP (Type:80) v4.0.9019 KC1 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 10307763
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP
Container name: "������� ��������� ������������ 330175041"
Signature key is not available.
Exchange key is available. HCRYPTKEY: 0x9e4e83
uec key is not available.

CSP algorithms info:
  Type:Encrypt    Name:'GOST 28147-89'(14) Long:'GOST 28147-89'(14)
  DefaultLen:256  MinLen:256  MaxLen:256   Prot:0   Algid:00026142

  Type:Hash       Name:'GR 34.11-2012 256'(18) Long:'GOST R 34.11-2012 256'(22)
  DefaultLen:256  MinLen:256  MaxLen:256   Prot:0   Algid:00032801

  Type:Signature  Name:'GR 34.10-2012 256'(18) Long:'GOST R 34.10-2012 256'(22)
  DefaultLen:512  MinLen:512  MaxLen:512   Prot:0   Algid:00011849

  Type:Exchange   Name:'DH 34.10-2012 256'(18) Long:'GOST R 34.10-2012 256 DH'(25)
  DefaultLen:512  MinLen:512  MaxLen:512   Prot:0   Algid:00043590

  Type:Exchange   Name:'DH 34.10-2012 256'(18) Long:'GOST R 34.10-2012 256 DH'(25)
  DefaultLen:512  MinLen:512  MaxLen:512   Prot:0   Algid:00043591

  Type:Hash       Name:'HMAC GOST 28147-89'(19) Long:'HMAC GOST 28147-89'(19)
  DefaultLen:32   MinLen:32   MaxLen:32    Prot:0   Algid:00032799

Status:
  Provider handles used:        3
  Provider handles max:         1048576
  CPU Usage:                    0 %
  CPU Usage by CSP:             0 %
  Measurement interval:         119 ms

  Virtual memory used:          3814720 KB
  Virtual memory used by CSP:   81908 KB
  Free virtual memory:          13399232 KB
  Total virtual memory:         17213952 KB

  Physical memory used:         3815476 KB
  Physical memory used by CSP:  12584 KB
  Free physical memory:         12399056 KB
  Total physical memory:        16214532 KB

Key pair info:
  HCRYPTKEY:  0x9e4e83
  AlgID:      CALG_DH_GR3410_12_256_SF = 0x0000aa46 (00043590):
    AlgClass: ALG_CLASS_KEY_EXCHANGE
    AlgType:  ALG_TYPE_DH
    AlgSID:   70
  KP_HASHOID:
    1.2.643.7.1.1.2.2 (ГОСТ Р 34.11-2012 256 бит)
  KP_DHOID:
    1.2.643.2.2.36.0 (ГОСТ Р 34.10 256 бит, параметры обмена по умолчанию)
  KP_SIGNATUREOID:
    1.2.643.2.2.36.0 (ГОСТ Р 34.10 256 бит, параметры обмена по умолчанию)
  Permissions:
    CRYPT_EXPORT
    CRYPT_READ
    CRYPT_WRITE
    CRYPT_IMPORT_KEY
    CRYPT_ARCHIVE
    0x800
    0x10000
    0x100000
KP_CERTIFICATE:
Subject: C=RU, S=Кемеровская область, L=Таштагол, T=специалист, O="ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ УЧРЕЖДЕНИЕ ""УПОЛНОМОЧЕННЫЙ МНОГОФУНКЦИОНАЛЬНЫЙ ЦЕНТР ПРЕДОСТАВЛЕНИЯ ГОСУДАРСТВЕННЫХ И МУНИЦИПАЛЬНЫХ УСЛУГ НА ТЕРРИТОРИИ КУЗБАССА""", SNILS=15492509785, INN=422805736810, E=mfc.operator@yandex.ru, G=Анастасия Владимировна, SN=Леонова, CN=Леонова Анастасия Владимировна
Valid  : 31.03.2023 06:58:00 - 23.06.2024 06:58:00 (UTC)
Issuer : E=uc_fk@roskazna.ru, S=77 Москва, 1.2.643.100.4="#120A37373130353638373630", OGRN=1047797019830, STREET="Большой Златоустинский переулок, д. 6, строение 1", L=г. Москва, C=RU, O=Казначейство России, CN=Казначейство России

Container version: 2
Keys in container:
  exchange key
Extensions (maxLength: 3465):
  ParamLen: 47
  OID: 1.2.643.2.2.37.3.10
  Critical: FALSE
  Size: 19
  Decoded size: 24
  PrivKey: Not specified - 30.06.2024 10:51:45 (UTC)

  ParamLen: 2076
  OID: 1.2.643.2.2.37.3.1
  Critical: FALSE
  Size: 2049
  Decoded size: 2077
  Certificates: 1:
    DName: E=uc_fk@roskazna.ru, S=77 Москва, 1.2.643.100.4="#120A37373130353638373630", OGRN=1047797019830, STREET="Большой Златоустинский переулок, д. 6, строение 1", L=г. Москва, C=RU, O=Казначейство России, CN=Казначейство России

  ParamLen: 1396
  OID: 1.2.643.2.2.37.3.3
  Critical: FALSE
  Size: 1369
  Decoded size: 1397
  Certificates: 1:
    DName: E=dit@digital.gov.ru, C=RU, S=77 Москва, L=г. Москва, STREET="Пресненская набережная, дом 10, строение 2", O=Минцифры России, OGRN=1047702026701, 1.2.643.100.4="#120A37373130343734333735", CN=Минцифры России
Total: SYS: 0,010 sec USR: 0,080 sec UTC: 1,160 sec
[ErrorCode: 0x00000000]
tashoper1@TASH-OKNO01:~$
 

SibUrsus

New member
Сообщения
26
#18
Давайте с кавычками разберёмся - заменим их на апострофы:
Код:
tashoper1@TASH-OKNO01:~$ opt/cprocsp/bin/amd64/certmgr -inst -store uMy -file /mnt/'Леонова Анастасия Владимировна.cer' -cont '\\.\Aktiv Co. Rutoken S 00 00\SCARD\rutoken_2a78554f\0B00\C1B2'
bash: opt/cprocsp/bin/amd64/certmgr: Нет такого файла или каталога
Сам файл .cer лежит в папке tmp. Почему? Мне так сказали.
 

SibUrsus

New member
Сообщения
26
#19
Самый простой способ для новичков - установит и свяжет сертификаты во всех доступных контейнерах:
Код:
tashoper1@TASH-OKNO01:~$ /opt/cprocsp/bin/amd64/csptestf -absorb -certs
Match: SCARD\rutoken_2a78554f\0B00\C1B2
OK.
Total: SYS: 0,030 sec USR: 0,040 sec UTC: 1,550 sec
[ErrorCode: 0x00000000]