Error code 0x00000002 cryptopro certmgr

cryptcp [ErrorCode: 0x00000002] - Добрый вечер уважаемые форумчане. Имею altlinux x64 КриптоПро 4.0 Устанавливал все по инструкции altlinux КриптоПРо 1. certmgr -inst -file root2018_12.cer -store mRoot - установка кревого...

Offline

it-crb

 


#1
Оставлено
:

1 января 2020 г. 20:00:31(UTC)

it-crb

Статус: Участник

Группы: Участники

Зарегистрирован: 01.01.2020(UTC)
Сообщений: 10

Сказал(а) «Спасибо»: 3 раз

Добрый вечер уважаемые форумчане.

Имею altlinux x64 КриптоПро 4.0
Устанавливал все по инструкции altlinux КриптоПРо

1. certmgr -inst -file root2018_12.cer -store mRoot — установка кревого сертификата(от root)
certmgr -inst -file 4BC6DC14D97010C41A26E058AD851F81C842415A.cer -store mRoot — установка кревого сертификата(от root)
certmgr -inst -crl -store CA -file 0657_rem2018_12.crl — установка промежуточного доворенного сертификата(от root)

2. Скопировал закрытый ключ в файловое хранилище, вывод:
csptestf -keyset -container ‘\.HDIMAGEHDIMAGE\obybhbyg.0007F35’ -info

Цитата:

CSP (Type:80) v4.0.9019 KC1 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 33455555
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP
Container name: «������� ������� �������� 1569240195»
Signature key is not available.
Exchange key is available. HCRYPTKEY: 0x201b0c3
uec key is not available.

2.1 certmgr -inst -file ./Шевелев Алексей Петрович 1569240195.cer -cont ‘\.HDIMAGEHDIMAGE\obybhbyg.0007F35’ — ассоциация сертификата с закртым ключом

3. Пытаюсь ассоциировать сертификат с закрытм ключем, находящимся в контейнере \.HDIMAGEHDIMAGE\obybhbyg.0007F35(от user)

Цитата:

[user@comp-core-i3-8100-f6baf0 csp]$ cryptcp -instcert -provtype 80 -cont ‘\.HDIMAGEHDIMAGE\obybhbyg.0007F35’ -dm -askpin Шевелев Алексей Петрович 1569240195.cer
CryptCP 4.0 (c) «КРИПТО-ПРО», 2002-2018.
Утилита командной строки для подписи и шифрования файлов.
Введите пароль для контейнера \.HDIMAGEHDIMAGE\obybhbyg.0007F35:
Ошибка: �� ������� ����� ��������� ����./dailybuildsbranches/CSP_4_0/CSPbuild/CSP/samples/CPCrypt/Enroll.cpp:783: 0x2
[ErrorCode: 0x00000002]
[user@comp-core-i3-8100-f6baf0 csp]$

Сайт УЦ https://uc.dvinaland.ru/

Что я не сделал или делаю не так? Спасибо!

Отредактировано пользователем 1 января 2020 г. 20:21:18(UTC)
 | Причина: Не указана


Вверх


Offline

Андрей Писарев

 


#2
Оставлено
:

1 января 2020 г. 20:46:36(UTC)

Андрей *

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,755
Мужчина
Российская Федерация

Сказал «Спасибо»: 451 раз
Поблагодарили: 1840 раз в 1423 постах

Здравствуйте.

Цитата:

Ошибка: �� ������� ����� ��������� ����./dailybuildsbranches/CSP_4_0/CSPbuild/CSP/samples/CPCrypt/Enroll.cpp:783: 0x2
[ErrorCode: 0x00000002]

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

Укажите полный путь к файлу с сертификатом.

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

it-crb

 


#3
Оставлено
:

1 января 2020 г. 20:49:49(UTC)

it-crb

Статус: Участник

Группы: Участники

Зарегистрирован: 01.01.2020(UTC)
Сообщений: 10

Сказал(а) «Спасибо»: 3 раз

Цитата:

Укажите полный путь к файлу с сертификатом.

выход тот же, возсожно что проблема из за кириллице в сертификате или имени сертификата?


Вверх


Offline

Андрей Писарев

 


#4
Оставлено
:

1 января 2020 г. 21:20:58(UTC)

Андрей *

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,755
Мужчина
Российская Федерация

Сказал «Спасибо»: 451 раз
Поблагодарили: 1840 раз в 1423 постах

Автор: it-crb Перейти к цитате

Цитата:

Укажите полный путь к файлу с сертификатом.

выход тот же, возсожно что проблема из за кириллице в сертификате или имени сертификата?

Поменяйте имя.

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

Андрей Писарев

 


#5
Оставлено
:

1 января 2020 г. 21:22:26(UTC)

Андрей *

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,755
Мужчина
Российская Федерация

Сказал «Спасибо»: 451 раз
Поблагодарили: 1840 раз в 1423 постах

Цитата:

./Шевелев Алексей Петрович 1569240195.cer

Что это за путь такой, почему пробелы, почему в имени файла?

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

it-crb

 


#6
Оставлено
:

1 января 2020 г. 21:23:28(UTC)

it-crb

Статус: Участник

Группы: Участники

Зарегистрирован: 01.01.2020(UTC)
Сообщений: 10

Сказал(а) «Спасибо»: 3 раз

Цитата:

Поменяйте имя.

Переименовал, сделал по этой инструкции, Установка сертификата все встало. Затрва попробую на следующей машин. Спасибо за отклик!


Вверх


Offline

it-crb

 


#7
Оставлено
:

1 января 2020 г. 21:24:45(UTC)

it-crb

Статус: Участник

Группы: Участники

Зарегистрирован: 01.01.2020(UTC)
Сообщений: 10

Сказал(а) «Спасибо»: 3 раз

Автор: Андрей Писарев Перейти к цитате

Цитата:

./Шевелев Алексей Петрович 1569240195.cer

Что это за путь такой, почему пробелы, почему в имени файла?

Имя файла сертификата с пробелами, поэтому обратные слжши нивелируют символ пробела. обыянач практика в линукс


Вверх

Пользователи, просматривающие эту тему

Guest (2)

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.


Offline

hijkez0

 


#1
Оставлено
:

30 марта 2020 г. 9:59:27(UTC)

hijkez0

Статус: Новичок

Группы: Участники

Зарегистрирован: 30.03.2020(UTC)
Сообщений: 2
Российская Федерация
Откуда: Оренбург

Здравствуйте!
Поставил ngate (1.0.0.6-lin-64bit) на ubuntu используя скрипт установки.
Приложение установилось , но не сертификаты организации.
В логе сообщение: «Critical Can’t save certificate into store. Insufficient rights.»
Пробую установить в ручную:
/opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file ./packages/Install/certs/GOST/имя_сертификата_ca.cer
/opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file ./packages/Install/certs/GOST/имя_сертификата.cer
Выполнение этих команд завершается сообщением: «[ErrorCode: 0x00000000]»
Пробую сделать импорт через графический интерфейс приложения, говорит что недостаточно прав.
Подскажите, как решить пробему?
Не хватает прав приложению? или на файлах сертификатов права нужно изменить?


Вверх


Offline

Андрей Куликов

 


#2
Оставлено
:

30 марта 2020 г. 11:33:50(UTC)

Андрей Куликов

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 17.10.2010(UTC)
Сообщений: 122
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 2 раз
Поблагодарили: 7 раз в 6 постах

Рутовые сертификаты можно поставить только руту.
А GUI под пользователем запускается.


Вверх


Offline

hijkez0

 


#3
Оставлено
:

30 марта 2020 г. 12:02:02(UTC)

hijkez0

Статус: Новичок

Группы: Участники

Зарегистрирован: 30.03.2020(UTC)
Сообщений: 2
Российская Федерация
Откуда: Оренбург

Пробовал так:
sudo /opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file ./packages/Install/certs/GOST/имя_сертификата_ca.cer
sudo /opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file ./packages/Install/certs/GOST/имя_сертификата.cer
Возникает ошибка:
Certmgr 1.1 (c) «Crypto-Pro», 2007-2019.
program for managing certificates, CRLs and stores

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

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

Хотя ,если сделать sudo /opt/cprocsp/bin/amd64/certmgr -inst -store uroot
то в списке видны нужные сертификаты, но не вины через граф интерфейс приложения.

Отредактировано пользователем 30 марта 2020 г. 12:11:10(UTC)
 | Причина: Не указана


Вверх


Offline

Nikolay Batischev

 


#4
Оставлено
:

30 марта 2020 г. 17:46:41(UTC)

Nikolay

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 06.11.2013(UTC)
Сообщений: 70
Мужчина
Албания
Откуда: Тирана

Сказал «Спасибо»: 3 раз
Поблагодарили: 11 раз в 11 постах

У вас два сертификата скорее всего один корневой(самоподписанный), второй промежуточный.
Если это так, корень нужно ставить в uroot, всё верно. Промежуточный в uCa.


Вверх

Пользователи, просматривающие эту тему

Guest (2)

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

Дмитрий Кривокрысенко

Здравствуйте Господа!
Благодарю за оказанную помощь.
Подскажите пожалуйста пути решения в установке личного сертификата пользователя  *.cer в систему Alt Linux 7KDE x64, необходимо для работы с системой «ГАС Управление». Все остальные шаги по установке КриптоПро и КриптоФокс прошел.
А с установкой сертификата проблемы.
Заранее благодарен


Записан



Записан

Андрей Черепанов (cas@)


Дмитрий Кривокрысенко

Здравствуйте Андрей!
Продолжаю экспериментировать с Centaurus 7.05 x32
Прошел все указанные Вами шаги по установке Крипто Про и плагина для браузера.
Информацию брал тут https://www.altlinux.org/%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%9F%D1%80%D0%BE
споткнулся на этапе установки корневого сертификата
выдал ошибку:

[root@LINUX-ANMR-PC3 linux-ia32]# /opt/cprocsp/bin/ia32/certmgr -inst -cert -file ~/Загрузки/kornevoy-sertifikat-_kvalifitsirovannyy_.cer -store uRoot
Certmgr 1.0 (c) «CryptoPro»,  2007-2010.
program for managing certificates, CRLs and stores

Error(0x2). Can not open file
   at /dailybuildsbranches/CSP_4_0/CSPbuild/CSP/src/certmgr/certmgr.cpp:2329

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

Подскажите пожалуйста, что это значит и как это решить, ибо только учусь.


Записан


КриптоПро не может найти файл сертификата. Зачем Вы под root его запускали, а в пути указали домашний каталог (то есть /root), где ничего не лежит?
КриптоПро прекрасно работает под обычным пользователем. Под ним и скачивайте cer и запускайте certmgr (с установленным cryptopro-preinstall не нужно вводить полные пути к исполняемым файлам.


Записан

Андрей Черепанов (cas@)



Записан


Дмитрий Кривокрысенко

при установке от имени пользователя тоже есть ошибка

[master@LINUX-ANMR-PC3 ~]$ /opt/cprocsp/bin/ia32/certmgr -inst -cert -file ~/Загрузки/kornevoy-sertifikat-_kvalifitsirovannyy_.cer -store uRoot
Certmgr 1.0 (c) «CryptoPro»,  2007-2010.
program for managing certificates, CRLs and stores

Install:
=============================================================================
1——-
Issuer              : UnstructuredName=Server CA, E=uc_fk@roskazna.ru, S=77 г. Москва, INN=007710568760, OGRN=1047797019830, STREET=»улица Ильинка, дом 7″, L=Москва, C=RU, O=Федеральное казначейство, CN=УЦ Федерального казначейства
Subject             : UnstructuredName=Server CA, E=uc_fk@roskazna.ru, S=77 г. Москва, INN=007710568760, OGRN=1047797019830, STREET=»улица Ильинка, дом 7″, L=Москва, C=RU, O=Федеральное казначейство, CN=УЦ Федерального казначейства
Serial              : 0x01
SHA1 Hash           : 0x30ef8b31cb2b67501e523d741273a378e3aa3a59
SubjKeyID           : 9e710e0fdab401285f3fe2cb8f65159702478cab
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 28/06/2013  13:09:33 UTC
Not valid after     : 28/06/2018  13:09:33 UTC
PrivateKey Link     : No                 
=============================================================================

[ErrorCode: 0x00000000]
[master@LINUX-ANMR-PC3 ~]$


Записан


А не связана она с кириллическим названием каталога «Загрузки» ?


Записан


[ErrorCode: 0x00000000]

Код ошибки 0 — не означает-ли, что ошибки нет?


Записан



Записан


Нет никакой ошибки, код 0.


Записан

Андрей Черепанов (cas@)


Дмитрий Кривокрысенко

Благодарю за информацию!
при попытке использовать token-manager, происходит импорт, даже сообщение об успешном импорте выходит, а самого файла сертификата  не видно. Только после импорта через certmgr, сертификат появляется в списке установленных. В чем причина может быть?


Записан


Дмитрий Кривокрысенко

пытаюсь сделать по этой инструкции https://geektimes.ru/post/280268/
какие каталоги имеются в виду чтобы вот это:

В том случае, если используется Linux с rpm-пакетами, то необходимо его распаковать и скопировать в соответствующие каталоги/директории/папки. Необходимо также будет выполнить скрипт postinst от имени root:
#sh –xv postinst

сработало с установленным firefox-gost ???

« Последнее редактирование: 08.12.2016 14:20:25 от ruslandh »


Записан


пытаюсь сделать по этой инструкции https://geektimes.ru/post/280268/

сработало с установленным firefox-gost ???

там используется другой «firefox» и другой криптопровайдер — не cryptopro…

Видимо нужно иметь несколько компьютеров для доступа к разным госсайтам  :-o


Записан


при попытке использовать token-manager, происходит импорт, даже сообщение об успешном импорте выходит, а самого файла сертификата  не видно. Только после импорта через certmgr, сертификат появляется в списке установленных. В чем причина может быть?

лучше спросить у автора — https://github.com/bmakarenko


Записан


Дмитрий Кривокрысенко

в результате танца с бубном добился появления плагина в списке Firefox!!!!
Дальше интересней!
При входе на gasu.gov.ru всплывает окно плагина ура!
Но пишет нет действующих сертификатов :-
после установки token-manager, бывшему пользователю винды наглядно видны установленные корневые сертификаты! Но при установке личного сертификата вышло сообщение «импорт успешно!» и все в окне просмотра его нет. если выполнить certmgr -list то все пристойно, под номером 1 пользовательский под номером 2 корневой.
где затык не пойму


Записан


Содержание

КриптоПро на debian ubuntu

Ссылки

Лицензия

Просмотр лицензии:

cpconfig -license -view

Для установки другой лицензии (под root):

cpconfig -license -set <серийный_номер>

Корневые сертификаты

Просмотр корневых сертификатов

certmgr -list -store uroot

В более старых версиях вместо uroot следует использовать root:

certmgr -list -store root

Добавление корневых сертификатов (под root) из файла cacer.p7b

sudo certmgr -inst -all -store uroot -file cacer.p7b

Необходимо последовательно добавить все сертификаты

Сертификаты

Список установленных сертификатов

certmgr -list, например:

1-------
Issuer            : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject           : CN=test2
Serial            : 0x120007E4E683979B734018897B00000007E4E6
SHA1 Hash         : 0x71b59d165ab5ea39e4cd73384f8e7d1e0c965e81
Not valid before  : 07/09/2015  10:41:18 UTC
Not valid after   : 07/12/2015  10:51:18 UTC
PrivateKey Link   : Yes. Container  : HDIMAGE\test2.000F9C9
2-------
Issuer            : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject           : CN=webservertest
Serial            : 0x120007E47F1FD9AE0EDE78616600000007E47F
SHA1 Hash         : 0x255c249150efe3e48f1abb3bc1928fc8f99980c4
Not valid before  : 07/09/2015  09:56:10 UTC
Not valid after   : 07/12/2015  10:06:10 UTC
PrivateKey Link   : Yes. Container  : HDIMAGE\webserve.0012608

Добавление реального сертификата

Добавить только сертификат (только проверка ЭЦП):

certmgr -inst -file cert.cer

Добавление реального сертификата с привязкой к закрытому ключу и возможностью подписывать документы

Закрытый ключ состоит из шести key-файлов:

header.key
masks2.key
masks.key
name.key
primary2.key
primary.key

Способ с дискетой или флешкой

Скопировать в корень дискеты или флэшки сертификат и приватный ключ (из каталога 999996.000, 999996 — название (alias) контейнера):

cp -R /path/to/key/999996.000 /media/flashdrive/
cp /path/to/cert/client.cer /media/flashdrive/

Выполнить команду по копированию ключа с флэшки на диск, ключ попадет в пользовательское хранилище My.

Необходимо выполнять под пользователем, который будет использовать данный контейнер для подписи.

gate@example.com — то, что прописано в поле E сертификата (можно посмотреть командой keytool --printcert -file /path/to/cert/client.cer):

csptest -keycopy -src '\.FLASHgate@example.com' -dest '\.HDIMAGE999996'

С жесткого диска

«Ручной способ».

Скопировать приватный ключ в хранилище (контейнер), где <username> — имя пользователя linux:

cp -R /path/to/key/999996.000 /var/opt/cprocsp/keys/<username>/

Поставить «минимальные» права:

chmod 600 /var/opt/cprocsp/keys/<username>/999996.000/*

Узнать реальное название контейнера:

csptest -keyset -enum_cont -verifycontext -fqcn

Ассоциировать сертификат с контейнером, сертификат попадет в пользовательское хранилище My:

certmgr -inst -file /path/to/file/client.cer -cont '\.HDIMAGE999996'

Если следующая ошибка, нужно узнать реальное название контейнера (см. выше):

Failed to open container \.HDIMAGE<container>
[ErrorCode: 0x00000002]

Установить сертификат УЦ из-под пользователя root командой:

certmgr -inst -store uroot -file /path/to/file/CA.cer

Проверка успешности установки закрытого ключа

certmgr --list

PrivateKey Link

Если выводится PrivateKey Link: Yes. Container: HDIMAGE\999996.000D7BB, то есть и сертификат, и приватный ключ, а если выводится PrivateKey Link: No — связи нет, и использовать такой контейнер для подписи не удастся.

Источник

Добавление тестового сертификата

Добавление работает только на той же машине, и в тот же контейнер, где был сформированы следующий запрос на добавление:

cryptcp -creatrqst -dn 'cn=test' -cont '\.hdimagetest' test.csr

Ввести пароль на контейнер test123.

cryptcp -creatrqst -dn 'e=email@test.ru,cn="тест тест",c=rus,l="москва",o="текст тест"' -cont '\.hdimagemyname' myname.csr

Пароль mysecurepass

Откройте в браузере ссылку тестовый удостоверяющий центр КриптоПро

cryptcp -instcert -cont '\.hdimagetest' certnew.cer

Ввести пароль на контейнер. По-умолчанию: 12345678

Удаление сертификата

Проверка сертификата

certmgr -list -f file.sig

Ответ:

1-------
Issuer            : E=cpca@cryptopro.ru, C=RU, L=Москва, O=ООО КРИПТО-ПРО, CN=УЦ KPИПTO-ПPO
Subject           : E=info@site.ru, C=RU, L=г. Москва, O="ООО ""Верес""", OU=Руководство, CN=Иванов Иван Иванович, T=Генеральный директор
Serial            : 0x75F5C86A000D00016A5F
SHA1 Hash         : 0x255c249150efe3e48f1abb3bc1928fc8f99980c4
Not valid before  : 08/12/2014  09:04:00 UTC
Not valid after   : 08/12/2019  09:14:00 UTC
PrivateKey Link   : No

Подписание пустого файла (размер 0) проходит успешно, но при просмотре сертификатов этого файла выдается ошибка:

Can't open certificate store: '/tmp/tmp.G8cd13vzfZ.sig'.
Error: No certificate found.
/dailybuilds/CSPbuild/CSP/samples/CPCrypt/Certs.cpp:312: 0x2000012D
[ErrorCode: 0x2000012d]

Будьте внимательны!

Просмотр всех атрибутов сертификата

В cryptcp нет необходимых инструментов для получения всех атрибутов сертификата. Поэтому следует использовать openssl, но настроив его.

Получаем SHA 1 хеши:

certmgr -list -f file.sig | grep 'SHA1 Hash'

В цикле извлекаем сертификаты:

cryptcp -nochain -copycert -thumbprint 255c249150efe3e48f1abb3bc1928fc8f99980c4 -f file.sig -df certificate.der -der
openssl x509 -in certificate.der -inform der -text -noout

Настройка openssl для поддержки ГОСТ:

В файл /etc/ssl/openssl.cnf

openssl_conf = openssl_def # Это в начало файла
#Все что ниже в конец
[openssl_def]
engines = engine_section
 
[engine_section]
gost = gost_section
 
[gost_section]
engine_id = gost
dynamic_path = /usr/lib/ssl/engines/libgost.so # заменить реальным файлом
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet

Проверка:

openssl ciphers | tr ":" "n" | grep -i gost
GOST2001-GOST89-GOST89
GOST94-GOST89-GOST89

Экспорт сертификатов на другую машину

Закрытые ключи к сертификатам находятся тут: /var/opt/cprocsp/keys. Поэтому эти ключи переносятся просто: создаем архив и переносим на нужную машину в тот же каталог.

Экспорт самих сертификатов (если их 14):

for i in `seq 1 14`; do echo $i | certmgr -export -dest $i.cer; done

Переносим эти файлы на машину и смотрим, какие контейнеры есть:

csptest -keyset -enum_cont -verifycontext -fqcn

И как обычно, связываем сертификат и закрытый ключ:

certmgr -inst -file 1.cer -cont '\.HDIMAGEcontainer.name'

Если закрытый ключ и сертификат не подходят друг к другу, будет выведена ошибка:

Can not install certificate
Public keys in certificate and container are not identical

Если все успешно:

Если нет закрытого ключа, то просто ставим сертификат:

certmgr -inst -file 1.cer

Подписание документа ЭЦП

cryptcp -sign (КПС1) -nochain -pin pincode src.txt dest.txt.sig
  • nochain — отменяет проверку цепочки сертификатов

  • pin — пин-код

  • КПС1 — критерий поиска сертификата

Пример создания ЭЦП (по SHA1 Hash):

cryptcp -sign -thumbprint 255c249150efe3e48f1abb3bc1928fc8f99980c4 -nochain -pin test test.txt test.txt.sig
[ReturnCode: x] Описание Возвращаемый код завершения в баше $?
0 успешно 0
0x8010006b Введен неправильный PIN 107
0x2000012d Сертификат не найден 45
0x20000065 Не удалось открыть файл 101

Проверка подписи ЭЦП

Для верифицирования сертификатов нужен сертификат удостоверяющего центра и актуальный список отзыва сертификатов,
либо настроенный для этого revocation provider.

Корневой сертификат УЦ, список отзыва сертификата является одним из реквизитов самого сертификата.

Контрагенты когда открывают подписи в КриптоАРМ используют revocation provider, он делает проверки отзыва сертификата онлайн.
Как реализована проверка в Шарепоинте не знаю. Знаю только что используется библиотека Крипто.Net

cryptcp -verify -nochain

Проверка конкретной подписи из локального хранилища по его хешу:

cryptcp -verify -thumbprint 255c249150efe3e48f1abb3bc1928fc8f99980c4 -nochain test.txt.sig

Проверить, взяв сертификат из file1.sig, подпись файла file2.sig. Практически, надо использовать один и тот же файл:

cryptcp -verify -norev -f file1.sig file2.sig

Ответ:

Certificates found: 2
Certificate chains are checked.
Folder './':
file.xls.sig... Signature verifying...
Signer: Старший инженер, Иванов Иван Иванович, Отдел закупок, ООО «Верес», Москва, RU, info@site.ru
 Signature's verified.
Signer: Генеральный директор, Сидоров Иван Петрович, Руководство, ООО «Кемоптика», Москва, RU, info@site.ru
 Signature's verified.
[ReturnCode: 0]

Результат:

[ReturnCode: x] Текст Описание Возвращаемый код завершения в баше $?
0 Успешно 0
0x80091004 Invalid cryptographic message type Неправильный формат файла 4
0x80091010 The streamed cryptographic message is not ready to return data Пустой файл 16

Получение исходного файла

Получение исходного файла (сообщения):

cryptcp -verify -nochain file.sig file.txt

Будет ругаться на сертификат (так как не будет проверки), но подпись удалит. Вариант с проверкой:

cryptcp -verify -nochain -f file.sig file.sig file.txt

Настройка службы точного времени

apt-get install ntp ntpdate

Необходимо добавить сервера:

/etc/ntp.conf
# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example
server ntp1.stratum2.ru
server ntp2.stratum2.ru

Ссылка

Установка сертификатов используя КриптоПРО в Linux

Описание процесса установки приведено на примере дистрибутива семейства Debian (x64).
Названия файлов и директорий могут варьироваться от системы к системе.

При установке личных сертификатов не нужны права суперпользователя, и наоборот, при установке сертификатов УЦ(корневых и промежуточных) могут потребоваться такие права.

Подключите USB носитель с ключевыми контейнерами и проверьте результат команды:

/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifycCSP (Type:80) v4.0.9009 KC1 Release Ver:4.0.9797 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 16188003
\.FLASHivanov
\.FLASHpetrov
\.FLASHsidorov
\.FLASHvasiliev
\.FLASHsmirnov
OK.
Total: SYS: 0,020 sec USR: 0,060 sec UTC: 0,180 sec

Можно сразу установить личные сертификатов из всех доступных контейнеров одной командой:
/opt/cprocsp/bin/amd64/csptestf -absorb -certs
Произойдет установка сертификатов, находящихся во всех доступных в момент запуска команды контейнерах (съемных флэш-носителях, жесткого диска и т. д.) в хранилище uMy.

Пример установки отдельно взятого сертификата из контейнера

При необходимости скопируйте ключевой контейнер \.FLASH.sidorov на жесткий диск:

/opt/cprocsp/bin/amd64/csptest -keycopy -contsrc '\.FLASHsidorov' -contdest '\.HDIMAGEsidor'CSP (Type:80) v4.0.9009 KC1 Release Ver:4.0.9797 OS:Linux CPU:AMD64 FastCode:READY:AVX.
CryptAcquireContext succeeded.HCRYPTPROV: 38556259
CryptAcquireContext succeeded.HCRYPTPROV: 38770755
Total: SYS: 0,000 sec USR: 0,100 sec UTC: 14,920 sec
[ErrorCode: 0x00000000]

Наличие [ErrorCode: 0x00000000] в завершении каждой команды КриптоПРО говорит о ее успешном выполнении.

Проверьте наличие нового контейнера \.HDIMAGEsidor:

/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifycCSP (Type:80) v4.0.9009 KC1 Release Ver:4.0.9797 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 34554467
\.FLASHivanov
\.FLASHpetrov
\.FLASHsidorov
\.FLASHvasiliev
\.FLASHsmirnov
\.HDIMAGEsidor
OK.
Total: SYS: 0,010 sec USR: 0,050 sec UTC: 0,130 sec
[ErrorCode: 0x00000000]

Установите личный сертификат:

/opt/cprocsp/bin/amd64/certmgr -inst -cont '.HDIMAGEsidor'Certmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores
Install:
=============================================================================
1-------
Issuer              : OGRN=1234567890123, INN=1234567890, STREET=Арбат, E=info@berkut.ru, C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
Subject             : SNILS=12345678901, OGRN=1234567890123, INN=0011234567890, E=sidorov@mail.ru, C=RU, S=10 Республика Карелия, L=Петрозаводск, O=ООО Ромашка, CN=Сидоров Николай Павлович, T=Администратор, G=Николай Павлович, SN=Сидоров
Serial              : 0x12C40953000000000019
SHA1 Hash           : 0xdd0ea8db46a372571c55315cd7e4d8e2de8fb9b6
SubjKeyID           : 5fc37e578cce0abe739c4da227f68a2f9abcb128
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 09/08/2016  06:07:00 UTC
Not valid after     : 09/11/2017  06:17:00 UTC
PrivateKey Link     : No
CA cert URL         : <mark>http://cert1.ucestp.ru/estp.crt</mark>
Extended Key Usage  : 1.3.6.1.5.5.7.3.4
1.3.6.1.5.5.7.3.2
=============================================================================
[ErrorCode: 0x00000000]

Скачайте корневой сертификат по ссылке выше (из поля CA cert URL): http://cert1.ucestp.ru/estp.crt и перенесите его, например, в домашнюю папку:

cp ~/Загрузки/estp.crt ~/estp.crt

Установите корневой сертификат (возможно потребуются права суперпользователя):

/opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file ~/estp.crtCertmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores
Install:
=============================================================================
1-------
Issuer              : OGRN=1234567890123, INN=1234567890, STREET=Арбат, E=info@berkut.ru, C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
Subject             : OGRN=1234567890123, INN=1234567890, STREET=Арбат, E=info@berkut.ru, C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
Serial              : 0x50D7BC0E4A3EC9994454EB83013EE5F5
SHA1 Hash           : 0xd2144a3e098b6f2decb224257f48e2b7c6d85209
SubjKeyID           : 07b753cd561dee8e5e83407be4575ecc05bfec14
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 17/06/2016  13:15:21 UTC
Not valid after     : 17/06/2021  13:25:01 UTC
PrivateKey Link     : No
=============================================================================
[ErrorCode: 0x00000000]

Проверьте установку личного сертификата:

/opt/cprocsp/bin/amd64/certmgr -list -store uMyCertmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores
=============================================================================
1-------
Issuer              : OGRN=1234567890123, INN=1234567890, STREET=Арбат, E=info@berkut.ru, C=RU, S=77 г.Москва, L=Москва, O=ООО 'Беркут', OU=Удостоверяющий центр, CN=UCESTP
Subject             : SNILS=12345678901, OGRN=1234567890123, INN=0011234567890, E=sidorov@mail.ru, C=RU, S=10 Республика Карелия, L=Петрозаводск, O=ООО Ромашка, CN=Сидоров Николай Павлович, T=Администратор, G=Николай Павлович, SN=Сидоров
Serial              : 0x12C40953000000000019
SHA1 Hash           : 0xdd0ea8db46a372571c55315cd7e4d8e2de8fb9b6
SubjKeyID           : 5fc37e578cce0abe739c4da227f68a2f9abcb128
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 09/08/2016  06:07:00 UTC
Not valid after     : 09/11/2017  06:17:00 UTC
PrivateKey Link     : Yes
Container           : HDIMAGE\sidor.0002B01
Provider Name       : Crypto-Pro GOST R 34.10-2012 KC1 CSP
Provider Info       : ProvType: 80, KeySpec: 1, Flags: 0x0
CA cert URL         : http://cert1.ucestp.ru/estp.crt
Extended Key Usage  : 1.3.6.1.5.5.7.3.4
1.3.6.1.5.5.7.3.2
=============================================================================
[ErrorCode: 0x00000000]
  1. Если ваш криптопровайдер КриптоПро CSP и выходит данная ошибка, вам требуется: перезапустить приложение Айтиком и Настройте ДСЧ в КриптоПро CSP

Решение:

  • Необходимо зайти в диспетчер задач и завершить процесс изображенный на Рисунке 1. (нажимаете на процесс->завершить задачу)

Рис.1

  • Затем заходите в программу КриптоПро CSP. (Рисунок 2)

Рис.2

  • После открытия приложения нажимаем «Запустить с правами администратора» (Рисунок 3)

Рис.3

  • Затем входим во вкладку оборудование и выбираем пункт «Настроить ДСЧ…» (Рисунок 4)

Рис. 4

  • В появившемся окне выбираем «Биологический ДСЧ» и нажимаем Удалить. Затем нажимаем «Добавить…» -> Далее -> «В правой колонке выбираем Биологический ДСЧ (Рисунок 5) и жмем Далее -> Далее -> Готово (Рисунок 6)

Рис. 5

Рис. 6

  • После выполненных действий заходим на Диск (с) в папку ITCOM и запускаем от имени администратора приложение crm-agent (Рис.7)

Рис. 7

2. Если ваш криптопровайдер VipNet CSP и выходит данная ошибка, вам требуется: открыть панель управления ->Программы и компоненты -> Удаление программ -> выбрать программу «VipNet CSP» и нажать «Изменить» в новом окне выбрать «Восстановить»

после восстановления перезагрузите приложение Айтиком:

  • Необходимо зайти в диспетчер задач и завершить процесс изображенный на Рисунке (нажимаете на процесс->завершить задачу)
  • После выполненных действий заходим на Диск (с) в папку ITCOM и запускаем от имени администратора приложение crm-agent

После выполненных действий повторяем действия генерации по ссылке из письма



Остались вопросы? Как мы можем помочь?

Как мы можем помочь?

Ошибка создания ключевой пары (0x8010006e)Ошибка при генерации: [Object Object]

Время прочтения
8 мин

Просмотры 72K

Поговорим немного про средства электронной подписи (ЭП) с использованием отечественных ГОСТ-алгоритмов в Linux. Несмотря на то, что различные средства и интерфейсы по работе с ЭП в Linux развиты даже лучше, чем в Windows, использовать их не так просто.

Такое положение вещей сохранялось последние несколько лет. Но с конца 2016 года ситуация изменилась в лучшую сторону. Появилось сразу два продукта, которые позволяют работать с электронной подписью по стандарту ГОСТ и шифрованием без использования консоли – это Rosa Crypto Tool и Trusted eSign. Оба эти продукта для работы с криптографией используют «КриптоПро CSP» для Linux. Поэтому, перед тем как обратиться к описанию самих продуктов, поговорим немного про «КриптоПро CSP».

«КриптоПро CSP» под Linux — неоднозначный продукт. С одной стороны, это одно из самых распространенных и мощных сертифицированных средств по работе с криптографией как в Windows, так и в Linux. С другой стороны, для простого человека пользоватся его интерфейсами даже в Windows не так-то просто. А в Linux доступен только консольный интерфейс. Надеюсь, что компания «КриптоПро» в курсе этой ситуации, и в будущем нас ждут новые красивые и удобные интерфейсы, как для Windows, так и для Linux.

Для настройки нам понадобится:

  • Любимый дистрибутив Linux. Я использовал Ubuntu Linux 16.04 LTS и ROSA Fresh GNOME R8;
  • Сертифицированная версия КриптоПро CSP 4.0 R2 для Windows, UNIX и macOS;
  • Рутокен ЭЦП 2.0.

Настройка «КриптоПро» CSP

Несмотря на то, что есть несколько неплохих статей по настройке «КриптоПро CSP» под Linux (например, тут или тут), я опишу здесь свой вариант. Основная причина в том, что большинство инструкций написаны для «Крипто Про CSP» версии 3.x. А современная версия «КриптоПро CSP» 4.0 не является 100% совместимой с 3.x. Дополнительная причина – всегда приятно иметь полную инструкцию по настройке в одном месте, а не переключаться с одного окна на другое.

Приступаем к настройке.

Скачиваем «КриптоПро CSP» для Linux с официального сайта КриптоПро — www.cryptopro.ru/downloads

Распаковываем «КриптоПро CSP» для Linux:

tar -zxf ./linux-amd64_deb.tgz

Далее у нас есть 2 варианта – автоматическая установка и установка вручную. Автоматическая установка запускается командой:

sudo ./install.sh 

или

sudo ./install_gui.sh

Здесь надо отдать должное разработчикам «КриптоПро» – автоматическая установка для большинства дистрибутивов отрабатывает успешно. Хотя бывают и нюансы. Например, если у вас не хватает некоторых пакетов, то установка будет успешно завершена, хотя некоторый функционал работать не будет.

Если что-то пошло не так, или вы по тем или иным причинам хотите использовать установку в ручном режиме, то вам необходимо выполнить:

dpkg -i ./cprocsp-curl-64_4.0.0-4_amd64.deb lsb-cprocsp-base_4.0.0-4_all.deb lsb-cprocsp-capilite-64_4.0.0-4_amd64.deb lsb-cprocsp-kc1-64_4.0.0-4_amd64.deb lsb-cprocsp-rdr-64_4.0.0-4_amd64.deb

Для установки пакетов в ROSA используйте urpmi, вместо dpkg -i.

Устанавливаем лицензию для «КриптоПро CSP» для Linux и проверяем, что все работает нормально:

cpconfig -license -set <серийный_номер>
cpconfig -license –view

Мы должны получить что-то вроде:

License validity:
XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
Expires: 3 month(s) 2 day(s)
License type: Server.

Настройка работы с Рутокен ЭЦП 2.0

Сделаем небольшое отступление. Для работы с электронной подписью и шифрованием нам не обойтись без ключевых пар и сертификатов. Надежное хранение закрытых ключей – один из основных факторов безопасности. А более надежных средств хранения, чем токен или смарт-карта, человечество пока не придумало. Я буду использовать Рутокен ЭЦП 2.0, который имеет сертификат ФСБ и поддерживает работу как с новыми, так и со старыми ГОСТами.

Для работы с токенами в ОС Linux есть масса различных средств и драйверов. Для описания всех этих средств понадобится отдельная статья. Поэтому я не буду подробно описывать, как это работает, и почему нам нужны именно эти пакеты.

Устанавливаем пакеты для работы с Рутокен ЭЦП 2.0:

apt-get install libpcsclite1 pcscd libccid

Нам также необходимо установить пакеты КриптоПро CSP для поддержки работы с токенами:

dpkg -i ./cprocsp-rdr-gui-gtk-64_4.0.0-4_amd64.deb ./cprocsp-rdr-rutoken-64_4.0.0-4_amd64.deb ./cprocsp-rdr-pcsc-64_4.0.0-4_amd64.deb ./lsb-cprocsp-pkcs11-64_4.0.0-4_amd64.deb

Получаем тестовый сертификат

Перед тем как перейти непосредственно к работе с подписью, надо сгенерировать ключевую пару и создать сертификат электронной подписи. Если у вас уже есть Рутокен с контейнером «КриптоПро», то эту часть можно смело пропустить.

Воспользуемся тестовым УЦ компании «КриптоПро» по адресу — https://www.cryptopro.ru/certsrv/
Создаем запрос на сертификат с параметрами по умолчанию.

Проверим, что сертификат получен успешно.

Чтобы убедиться, что «КриптоПро CSP» успешно увидел токен, выполним:

list_pcsc

Мы должны получить что-то вроде:

Aktiv Rutoken ECP 00 00

Теперь проверяем, что сертификат на токене видится успешно:

csptest -keyset -enum_cont -verifyc -fq

Получаем:

CSP (Type:80) v4.0.9014 KC1 Release Ver:4.0.9842 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 13476867
\.Aktiv Rutoken ECP 00 00822506788-dfcd-54c9-3a5e-e0a82a2d7f0
OK.
Total: SYS: 0,020 sec USR: 0,160 sec UTC: 0,870 sec
[ErrorCode: 0x00000000]

Записываем в хранилище сертификатов КриптоПро информацию об этом сертификате:

csptestf -absorb -cert -pattern 'rutoken'

Match: SCARDrutoken_ecp_351d6671A0062AC
OK.
Total: SYS: 0,010 sec USR: 0,140 sec UTC: 1,040 sec
[ErrorCode: 0x00000000]

Проверим, что сертификат успешно сохранился в хранилище:

certmgr -list -cert -store uMy

Certmgr 1.0 (c) "CryptoPro",  2007-2010.
program for managing certificates, CRLs and stores
 
=============================================================================
1-------
Issuer              : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject             : CN=Trusted eSign Test
Serial              : 0x120019F5D4E16D75F520A0299B00000019F5D4
SHA1 Hash           : 0x016f443df01187d5500aff311ece5ea199ff863e
SubjKeyID           : 204e94f63c68595e4c521357cf1d9279bff6f6e5
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 22/02/2017  10:53:16 UTC
Not valid after     : 22/05/2017  11:03:16 UTC
PrivateKey Link     : Yes                
Container           : SCARDrutoken_ecp_351d6671A0062AC
Provider Name       : Crypto-Pro GOST R 34.10-2012 KC1 CSP
Provider Info       : ProvType: 80, KeySpec: 1, Flags: 0x0
CA cert URL         : http://testca.cryptopro.ru/CertEnroll/test-ca-2014_CRYPTO-PRO%20Test%20Center%202.crt
OCSP URL            : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP                 : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO%20Test%20Center%202.crl
Extended Key Usage  : 1.3.6.1.5.5.7.3.2
=============================================================================
 
[ErrorCode: 0x00000000]

На этом основная настройка завершена, и мы можем начинать подписывать или шифровать файлы с использованием различных средств. Переходим к тому, зачем задумывалась эта статья.

Подпись средствами «КриптоПро CSP»

В составе «КриптоПро CSP» есть утилита csptestf, позволяющая выполнять различные криптографические операции. Как я уже писал выше, у этой утилиты есть 2 недостатка:

  • Отсутствие хорошей документации;
  • Отсутствие графического интерфейса.

Подписать можно с помощью команды:

csptestf –sfsign –sign –in <имя файла> -out <имя файла> -my ‘Trusted eSign Test’ –detached –alg GOST94_256

Здесь,
my — параметр, в котором надо указать часть Common Name сертификата для подписи;
detached — позволяет создать открепленную подпись;
alg GOST94_256 — задает алгоритм хэширования, который будет использоваться при создании подписи.

Более подробную информацию о возможных параметрах вы можете получить, выполнив команду:

csptestf –sfsign

Такой интерфейс отлично подходит для подготовленного пользователя или для автоматизации операций в скриптах.

Поговорим теперь об утилитах, которые облегчают жизнь обычным пользователям при работе с подписью и шифрованием в Linux.

Rosa Crypto Tool

Как следует из названия, это утилита для работы с электронной подписью и шифрованием для дистрибутива ROSA Linux. В данный момент утилита доступна в репозиториях Rosa Linux и Alt Linux.

Эта утилита разрабатывается одним человеком – Михаилом Вознесенским. У нее простой, но удобный интерфейс. На данный момент утилита находится в активной разработке – с ноября 2016 года мне удалось протестировать три версии. Последняя версия, доступная на момент написание статьи — 0.2.2. Сейчас утилита поддерживает работу только с «КриптоПро CSP» для Linux, однако в ближайшее время будет добавлена поддержка других криптопровайдеров.

Что внутри? Утилита написана на Python с использованием PyQt4 для графического интерфейса.

Установить ее можно, использовав «Управление программами» в Rosa Linux.

Вставляем токен и запускаем утилиту.

Видим, что токен определился успешно и был найден наш сертификат.

Интерфейс программы настолько прост, что описывать и показывать в статье все его функции не имеет смысла. Попробуем только подписать файл.

Выбираем файл и жмем “Подписать файл”. Получаем вот такое предупреждение.

Нажимаем «OK» и получаем информацию о том, что файл был подписан успешно.

Основное достоинство этой утилиты в том, что она совершенно бесплатная, в отличии нашего следующего продукта.

По сравнению с использованием «КриптоПро CSP» из консоли:

+ На порядок проще использовать;
— Отсутствуют различные параметры подписи.

Исходный код программы доступен в публичном репозитории на ABF:
abf.io/uxteam/rosa-crypto-tool-devel
Система контроля версий, которую использует «НТЦ ИТ РОСА», интегрирована в сборочную среду и базируется на Git. Можно вполне использовать любой клиент git.

Надеюсь, разработчики других отечественных дистрибутивов Linux, таких как Astra Linux, GosLinux и другие добавят в свои дистрибутивы пакеты с rosa-crypto-tool.

Trusted eSign

Второй продукт, про который мы поговорим, это Trusted eSign от компании “Цифровые технологии”. Она известна на российском рынке ИБ как разработчик средства по работе с подписью и шифрованием для ОС Windows – «КриптоАРМ».

Главное, не путать этот продукт с Trusted.eSign – web-сервисом по работе с подписью этой же компании.

Найти продукт на сайтах компании “Цифровые технологии” непросто. Небольшое описание есть в магазине http://www.cryptoarm.ru/shop/trusted_esign, продукт также можно скачать в разделе «Центр загрузки» на сайте trusted.ru — https://trusted.ru/support/downloads/?product=133

К сожалению, продукт пока доступен только в виде deb пакета для 64-битных систем. С чем связано такое ограничение, непонятно. Будем надеяться, что в ближайшее время компания выпустит и rpm пакет, а также версии для 32-битных дистрибутивов Linux.

Скачиваем с официального сайта deb-пакет и устанавливаем командой:

dpkg –i ./trustedesign-x64.deb

Запускаем Trusted eSign.

Сразу видно, что разработка не обошлась без дизайнера. Никакого сарказма. Все действия делаются просто и логично, а внешний вид радует глаз. К сожалению, большинство средств и программ в области ИБ от российских разработчиков разработаны без привлечения UX-специалистов и дизайнеров и заставляют своих пользователей страдать и плакать кровавыми слезами. Создается впечатление, что другими средства информационной безопасности просто не могут быть. “Цифровые технологии” опровергают это. Плата за красоту и удобство – необходимость платить за лицензию.

Но вернемся к подписи.

Выбираем раздел “Электронная подпись”:

Выбираем «Сертификат для подписи»:

Выбираем файлы для подписи и жмем «Подписать»:

Что под капотом? Процитирую с сайта: “Приложение создано на современном движке Electron, для вызова криптографических операций применяется библиотека OpenSSL. Совместимо с СКЗИ “КриптоПро CSP 4.0” и поддерживает все криптографические алгоритмы, реализованные в нем.” Для тех, кто ещё не в курсе Electron — это фреймворк для создания десктопных приложений на платформе node.js.

Сравним Trusted eSign с Rosa crypto tool:

+ Более удобный и красивый интерфейс
— Платная лицензия

Резюме

Подведем итог. В конце 2016 – начале 2017 года наметился неплохой прогресс в средствах по работе с электронной подписью под Linux. Информационная безопасность начинает поворачиваться к пользователю лицом, и с каждым годом требуется все меньше действий для такого простого действия, как подписать или зашифровать файл с использованием отечественных алгоритмов.

Хочется дополнительно отметить такое развитие отечественных продуктов, учитывая современный тренд на замену Windows на Linux в государственных и муниципальных организациях. В рамках этого тренда становится актуальным использование средств криптографической защиты информации под Linux. Хорошие и удобные продукты российских разработчиков помогут государственным организациям и структурам нормально работать и выполнять требования по импортозамещению.

Такое развитие не может не радовать, особенно когда это происходит под Linux.

P.S.

Наверняка есть немало пользователей, особенно пользователей Linux, кто считает, что консольных утилит достаточно. А также специалистов по информационной безопасности, которые считают, что дизайн и удобство — излишество в ИБ. Но я не могу с ними согласиться. Консольные утилиты, несомненно, идеальны для автоматизации. Но большинству пользователей удобнее работать с графическими интерфейсами. Даже в Linux.

Установка и настройка КриптоПро CSP в Porteus Linux

КриптоПро — линейка криптографических утилит для генерации ЭЦП, работы с сертификатами, организации структуры PKI. Незаменимый продукт для работы в ЕИС (zakupki.gov.ru), Официальный сайт ГМУ (bus.gov.ru), Электронный бюджет (budget.gov.ru), Портал государственных услуг РФ + Единая система идентификации и аутентификации ЕСИА (esia.gosuslugi.ru), Федеральная налоговая служба (lkfl.nalog.ru) и т.д. Авторизация в личных кабинетах ГИС-ов возможна только по ГОСТ-у. Для этого можно использовать браузер Chromium с поддержкой ГОСТ —

скачать для x86_64

(

репозиторий на github.com

)

chromium-gost — веб-браузер с открытым исходным кодом на основе Chromium с поддержкой криптографических алгоритмов ГОСТ при установке защищённых соединений через интерфейс msspi
Для работы криптографических алгоритмов ГОСТ у вас должен быть установлен КриптоПро CSP (или другой криптопровайдер поддерживающий работу алгоритмов ГОСТ в интерфейсе SSPI)

Заметка. Все команды описанные в данной статье выполняем под root пользователем.
Для авторизации в качестве root пользователя выполните в терминале:

Скрипт автоматизированной сборки xzm модулей KC1 и KC2 КриптоПро CSP для Porteus

Code: Select all

#!/bin/bash

# Copyright 2017-2025  Blaze, Russian Federation, Lipetsk region, Dankov
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
# This is script for the automated building KC1 and KC2 xzm modules from rpm packages
# of CryptoPro CSP for Porteus i686 and x86_64.
#
#
# Date: 11.09.2017 20:58:47 (UTC+3)
#
#
# Скрипт для автоматизированной сборки KC1 и KC2 xzm модулей КриптоПро CSP для Porteus
# Вручную в браузере скачиваем архив с сайта КриптоПро CSP с rpm пакетами
# linux-ia32.tgz или linux-amd64.tgz, в зависимости от архитектуры ПК
# ссылка на загрузку https://www.cryptopro.ru/products/csp/downloads
# скопируйте данный архив в /tmp

if [ `whoami` != "root" ]; then
   echo 'Этот скрипт должен быть запущен с правами root'
   exit 1
fi

cd /tmp

# сборка для архитектуры i586
if [ -f "linux-ia32.tgz" ]; then
   mv linux-ia32.tgz linux-ia32.tar.gz
   tar xvf linux-ia32.tar.gz
   cd /tmp/linux-ia32
   VER=$(cat linux-ia32.ini | grep version= | cut -d "=" -f2)
   rm accord_random-*src.rpm
   rm cprocsp-drv*.rpm
   rm cprocsp-ipsec*.rpm
   rm cprocsp-pki*.rpm
   rm lsb-cprocsp-devel*.rpm
   rm lsb-cprocsp-rdr-sobol*.rpm
   rm sobol*.rpm
   rpm2xzm *.rpm *.xzm
   rm {*.rpm,*.sh,*.ini,cpverify}
   for x in `find . -type f ! -name 'lsb-cprocsp-kc1*' ! -name 'lsb-cprocsp-kc2*' | fgrep .xzm | sort`; do unsquashfs -n -f $x >/dev/null; done
   mkdir cprocsp-kc2-$VER-$(arch)
   cp -a squashfs-root/* cprocsp-kc2-$VER-$(arch)
   mv squashfs-root cprocsp-kc1-$VER-$(arch)
   xzm2dir lsb-cprocsp-kc1*.xzm cprocsp-kc1-$VER-$(arch)
   xzm2dir lsb-cprocsp-kc2*.xzm cprocsp-kc2-$VER-$(arch)
   rm *.xzm
   dir2xzm cprocsp-kc1-$VER-$(arch) cprocsp-kc1-$VER-i686.xzm
   dir2xzm cprocsp-kc2-$VER-$(arch) cprocsp-kc2-$VER-i686.xzm
   rm -rf /tmp/linux-ia32/cprocsp-kc?-$VER-$(arch) && rm install.desktop
   else echo "Архив linux-ia32.tgz не найден в директории /tmp"
fi

cd /tmp

# сборка для архитектуры x86_64
if [ -f "linux-amd64.tgz" ]; then
   mv linux-amd64.tgz linux-amd64.tar.gz
   tar xvf linux-amd64.tar.gz
   cd /tmp/linux-amd64
   VER=$(cat linux-amd64.ini | grep version= | cut -d "=" -f2)
   rm accord_random-*src.rpm
   rm cprocsp-drv*.rpm
   rm cprocsp-ipsec*.rpm
   rm cprocsp-pki*.rpm
   rm lsb-cprocsp-devel*.rpm
   rm lsb-cprocsp-rdr-sobol*.rpm
   rm sobol*.rpm
   rpm2xzm *.rpm *.xzm
   rm {*.rpm,*.sh,*.ini,cpverify}
   for x in `find . -type f ! -name 'lsb-cprocsp-kc1*' ! -name 'lsb-cprocsp-kc2*' | fgrep .xzm | sort`; do unsquashfs -n -f $x >/dev/null; done
   mkdir cprocsp-kc2-$VER-$(arch)
   cp -a squashfs-root/* cprocsp-kc2-$VER-$(arch)
   mv squashfs-root cprocsp-kc1-$VER-$(arch)
   xzm2dir lsb-cprocsp-kc1*.xzm cprocsp-kc1-$VER-$(arch)
   xzm2dir lsb-cprocsp-kc2*.xzm cprocsp-kc2-$VER-$(arch)
   rm *.xzm
   dir2xzm cprocsp-kc1-$VER-$(arch) cprocsp-kc1-$VER-x86_64.xzm
   dir2xzm cprocsp-kc2-$VER-$(arch) cprocsp-kc2-$VER-x86_64.xzm
   rm -rf /tmp/linux-amd64/cprocsp-kc?-$VER-$(arch) && rm install.desktop
   else echo "Архив linux-amd64.tgz не найден в директории /tmp"
fi

Скачиваем и распаковываем под root-ом мой скрипт

cprocsp.tar.bz2

в директории /tmp
Вручную в браузере скачиваем архив с сайта КриптоПро CSP с rpm пакетами linux-ia32.tgz или linux-amd64.tgz, в зависимости от архитектуры ПК
ссылка на загрузку

https://www.cryptopro.ru/products/csp/downloads

скопируйте данный архив(ы) в /tmp

Запускаем скрипт

Code: Select all

cd /tmp
# wget http://csp.ublaze.ru/cprocsp.tar.bz2
# tar xvf cprocsp.tar.bz2
./cprocsp.sh

Затем настраиваем КриптоПро CSP в Porteus Linux согласно этой инструкции

Готовые xzm модули с КриптоПро CSP для архитектур

i586

и x86_64

Заметка. Требования к уровню защиты информации КС2 содержат требования к уровню КС1 плюс дополнительные требования. Уровень защиты информации определяется потенциальными возможностями нарушителя, в соответсвии с базовой моделью нарушителя, разработанной ФАПСИ. Вкратце — для уровня КС1 предполагается, что имеем случайного внешнего нарушителя который может перхватывать информацию в каналах связи — следоватлеьно достаточные требования — математическая стойкость, корректности реализации и качество ключей. Уровень КС2 — неавторизованный внутренний нарушитель — следовательно достаточные дополнительные требования — разграничение доступа к СКЗИ, ну там есть еще кое-чего. Это влечет за собой наличие в системе сертифицированного фапси/фсб электронного замка, его основная задача — идентфикация и аутентфикация пользователя, проверка целсотности, доверенная загрузка. дополнительно — качественный аппаратный датчик случайных чисел и интерфейс к носителью ключевой информации.

Установка переменных окружения.

Чтобы каждый раз не вводить полный путь к утилитам КриптоПро CSP выполните команды:

Code: Select all

sed -i "s|ENV_SUPATH     PATH=|ENV_SUPATH     PATH="$(/bin/ls -d /opt/cprocsp/{s,}bin/*|tr 'n' ':')"|g" /etc/login.defs
sed -i "s|/usr/games|/usr/games:"$(/bin/ls -d /opt/cprocsp/{s,}bin/*|tr 'n' ':'| rev | cut -d: -f2- | rev)"|g" /etc/profile

Создание необходимых привязок и кэша для необходимых динамических библиотек.

Указываем чтобы считывались нестандартные библиотеки, для этого терминале выполните команды:

Code: Select all

# Для архитектуры x86_64
echo '/opt/cprocsp/lib/amd64' >> /etc/ld.so.conf
echo 'ldconfig' >> /etc/rc.d/rc.local
ldconfig

#в новой версии CSP - cp-openssl не требуется
#echo '/opt/cprocsp/cp-openssl/lib/amd64' >> /etc/ld.so.conf

# для GostEngy (обеспечивает поддержку ключей и алгоритмов ГОСТ через вызовы КриптоПро CSP) 
# ссылка https://update.cryptopro.ru/support/nginx-gost/bin/
#echo '/opt/cprocsp/cp-openssl-1.1.0/lib/amd64' >> /etc/ld.so.conf

Code: Select all

# Для архитектуры i586
echo '/opt/cprocsp/lib/ia32' >> /etc/ld.so.conf
echo 'ldconfig' >> /etc/rc.d/rc.local
ldconfig

#в новой версии CSP - cp-openssl не требуется
#echo '/opt/cprocsp/cp-openssl/lib/ia32' >> /etc/ld.so.conf

# GostEngy под i586 не нашел

Проверка версии и лицензии КриптоПро CSP.

Для проверки версии КриптоПро CSP выполните:

Для установки лицензии КриптоПро CSP выполните:

Code: Select all

cpconfig -license -set здесь-серийный-номер

например:

Code: Select all

cpconfig -license -set 50500-10037-ELQF5-H28KM-8E6BA

Проверить срок истечения лицензии можно командой:

Управление ридерами.

Ридеры (readers) — устройства размещения контейнеров (аппаратные токены, каталог для размещения файлов).

Для просмотра доступных ридеров (в зависимости от кодировки):

Code: Select all

csptest -enum -info -type PP_ENUMREADERS | iconv -f utf8

или

Code: Select all

csptest -enum -info -type PP_ENUMREADERS | iconv -f cp1251

Ридер HDIMAGE размещается в /var/opt/cprocsp/keys/имя_пользователя (guest или root)

Заметка. В /var/opt/cprocsp/keys/имя_пользователя хранятся ключевые контейнеры пользователей guest или root
В директории /var/opt/cprocsp/users находится хранилище сертификатов пользователей guest или root

Инициализация ридера HDIMAGE:

Code: Select all

cpconfig -hardware reader -add HDIMAGE store

Современные аппаратные и программно-аппаратные хранилища ключей, такие как Рутокен ЭЦП или eSmart ГОСТ, поддерживаются через интерфейс PCSC. За реализацию этого интерфейса отвечает служба pcscd, которую необходимо запустить перед началом работы с соответствующими устройствами:

Code: Select all

su
toor
chmod +x /etc/rc.d/rc.pcscd
/etc/rc.d/rc.pcscd start

Заметка. Предварительно скачайте и активируйте модули

Code: Select all

usm -u usm
usm -u all
usm -g pcsc-lite
usm -g openct
usm -g opensc
usm -g ccid

затем подключите токен к компьютеру и выполните скрипт:

Code: Select all

#!/bin/bash
not_solaris=1
if test ! -z "$not_solaris"; then
  search_dirs=''
  for d in `echo /usr/lib*/pcsc /usr/local/lib*/pcsc /usr/libexec/SmartCardServices/*`; do
    if echo $d|grep -v '*'; then
      search_dirs="$d $search_dirs";
    fi;
  done
  if test ! -z "$search_dirs"; then
    folder=`find -L $search_dirs -name "*ccid.bundle"`
    if test ! -z "$folder"; then
      pList_files=`find -L $folder -name "Info.plist"`
      if test ! -z "$pList_files"; then
        for pList in $pList_files; do
          ccid_reg.sh -add $pList 0x072F 0x90CC "ACS ACR 38U-CCID - CP"
          ccid_reg.sh -add $pList 0x072F 0x1204 "ACS ACR101 ICC Reader - CP"
          ccid_reg.sh -add $pList 0x072F 0x8201 "ACS APG8201 PINhandy 1 - CP"
          ccid_reg.sh -add $pList 0x072F 0x8202 "ACS APG8201 USB Reader - CP"
          ccid_reg.sh -add $pList 0x072F 0x90DB "ACS CryptoMate64 - CP"
          ccid_reg.sh -add $pList 0x0483 0xACD1 "Ancud Crypton SCR/RNG - CP"
          ccid_reg.sh -add $pList 0x0A89 0x0025 "Aktiv Rutoken lite - CP"
          ccid_reg.sh -add $pList 0x0A89 0x0030 "Aktiv Rutoken ECP - CP"
          ccid_reg.sh -add $pList 0x0A89 0x0080 "Aktiv PINPad Ex - CP"
          ccid_reg.sh -add $pList 0x0A89 0x0081 "Aktiv PINPad In - CP"
          ccid_reg.sh -add $pList 0x0A89 0x0060 "Aktiv Co., ProgramPark Rutoken Magistra - CP"
          ccid_reg.sh -add $pList 0x072f 0x90de "ACS Token - CP"
          ccid_reg.sh -add $pList 0x24dc 0x0102 "ARDS ZAO JaCarta LT - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x0002 "Infocrypt Token++ - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x0004 "Infocrypt Token++ - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x0006 "Infocrypt Token++ lite - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x0008 "Infocrypt Token++ lite - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x003a "Infocrypt Token++ lite - CP"
          ccid_reg.sh -add $pList 0x2022 0x078a "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2022 0x016c "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2022 0x0172 "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2022 0x0226 "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x078a "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x016c "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x0172 "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2fb0 0x0226 "Infocrypt HWDSSL DEVICE - CP"
          ccid_reg.sh -add $pList 0x2a0c 0x0001 "MultiSoft ltd. SCR2 - CP"
          ccid_reg.sh -add $pList 0x23a0 0x0008 "BIFIT ANGARA - CP"
          ccid_reg.sh -add $pList 0x1fc9 0x7479 "ISBC ESMART reader - CP"
          ccid_reg.sh -add $pList 0x2ce4 0x7479 "ESMART Token - CP"
          ccid_reg.sh -add $pList 0x04d8 0x003f "zis-group PRIVATE Security System Key"
        done
      fi
    fi
  fi
fi
cpconfig -hardware reader -add "Aktiv Rutoken ECP 00 00" -name 'Rutoken ECP 0'
cpconfig -hardware reader -add "Aktiv Rutoken ECP 01 00" -name 'Rutoken ECP 1'
cpconfig -hardware reader -add "Aktiv Rutoken lite 00 00" -name 'Rutoken lite 0'
cpconfig -hardware reader -add "Aktiv Rutoken lite 01 00" -name 'Rutoken lite 1'
cpconfig -hardware reader -add "Aktiv Co. Rutoken S 00 00" -name 'Rutoken S 0'
cpconfig -hardware reader -add "Aktiv Co. Rutoken S 01 00" -name 'Rutoken S 1'
cpconfig -hardware reader -add "Aktiv Rutoken Magistra 00 00" -name 'Rutoken Magistra 0'
cpconfig -hardware reader -add "Aktiv Rutoken Magistra 01 00" -name 'Rutoken Magistra 1'

Управление контейнерами.

Создание контейнера. Создадим контейнер с именем test в локальном ридере HDIMAGE.

Code: Select all

csptest -keyset -provtype 75 -newkeyset -cont '\.HDIMAGEtest'

При установленном пакете cprocsp-rdr-gui-gtk будет показано графическое окно, где предложат двигать курсором мыши
Image
После показа окна будет предложено указать пароль на контейнер (можно указать пустой, тогда пароль запрашиваться не будет) и снова предложат двигать курсором мыши.
Примечание: Если такой пакет не установлен, будет предложено ввести любые символы с клавиатуры

В КриптоПро 5 появилась возможность интерактивно выбирать ридер и тип создаваемого контейнера.
Теперь можно создавать неизвлекаемые контейнеры. Для этого необходимо выполнить команду:

Code: Select all

csptest -keyset -provtype 75 -newkeyset -cont  'имя_контейнера'

Откроется окно выбора ридера и способа создания неизвлекаемого контейнера или обычного контейнера.
Для неизвлекаемого контейнера, в GTK-окне следует выбрать «Вид приложения» → «Active token without secure channel».

Для добавления контейнера в носитель токена следует воспользоваться командой:

Code: Select all

csptest -keyset -newkeyset -cont '\.Aktiv Rutoken ECP 00 00TestCont'

Название токена может отличаться. Для идентификации токена воспользуйтесь командой:

Code: Select all

csptest -card -enum -v -v
# или
list_pcsc
# или можно просмотреть доступные ридеры
csptest -enum -info -type PP_ENUMREADERS | iconv -f utf8

Для удаления контейнера:

Code: Select all

csptest -keyset -deletekeyset -cont '\.HDIMAGEtest'

или:

Code: Select all

csptestf -passwd -cont '\.Aktiv Rutoken ECP 00 00TestCont' -deletek

Копирование контейнера. Для примера скопируем контейнер из локального хранилища в хранилище Рутокена ЕЦП:

Code: Select all

csptestf -keycopy -contsrc '\.HDIMAGEКонтейнер_оригинал' -contdest '\.Aktiv Rutoken ECP 00 00Контейнер_копия'

или

Code: Select all

csptest -keycopy -contsrc '<полное название контейнера>' -contdest '\.<название токена><желаемое название контейнера>'

Заметка. Полное название контейнера см. с помощью команды

Code: Select all

csptest -keyset -enum_cont -fqcn -verifyc -uniq | iconv -f cp1251

Для просмотра подробной информации о контейнерах воспользуйтесь командой:

Code: Select all

csptestf -keyset -container 'ИМЯ' -info

Для того чтобы проверить работу контейнера, следует выполнить команду:

Code: Select all

csptestf -keyset -container 'ИМЯ' -check

Для просмотра доступных контейнеров используйте команду:

Code: Select all

csptest -keyset -enum_cont -fqcn -verifyc -uniq | iconv -f cp1251

Работа с сертификатами.

4 категории сертификатов:

  1. личные сертификаты (ставятся в хранилище umy, где u = User, my — имя хранилища) — как правило для них есть закрытый ключ (и они требуют особой установки, чтобы в хранилище появилась ссылка на этот закрытый ключ). В результате с их использованием можно, например, подписать файл.
  2. корневые сертификаты — краеугольнй камень безопасности, так как цепочки доверия строятся от них, то их надо добавлять в хранилища осознанно и внимательно (ставятся в uroot, также администратор может поставить их в mroot, где m = Machine, такие сертификаты будут видны в read only в root-хранилищах всех пользователей)
  3. промежуточные сертификаты — появляются, когда есть промежуточные УЦ (головной -> промежуточный -> пользовательский). Прямое доверие к ним не требуется (ставятся в uca, также администратор может поставить их в mca). В это же хранилище ставятся CRL-и. Обычно точки получения промежуточных сертификатов и CRL-ей правильно указаны в пользовательских сертификатах, поэтому они автоматом выкачиваются и попадают в хранилище ucache. В общем про них можно ничего особо не знать и ничего не делать.
    Из под учетной записи пользователя guest промежуточные сертификаты устанавливать в uca, из под учетной записи администратора root ставить в mca.
  4. сертификаты партнёров по общению, чтобы проверять их подписи и зашифровывать для них сообщения. Ставятся либо в umy (это беспорядок, но популярный), либо в uAddressBook

Заметка. При установке в хранилище m* — все установленное доступно Всем пользователям системы.
При установке в хранилище u* — все установленное доступно только пользователю, от которого производилась установка.

Имена хранилищ указаны в формате certmgr, у cryptcp похожий формат: -mroot и -uAddressBook

  • Подробная инструкция по утилите сertmgr.
  • Руководство по использованию cryptcp

Установка сертификата с токена:

Code: Select all

certmgr -inst -cont '<путь к контейнеру, начинающийся на \.>' -store uMy

Например:

Code: Select all

certmgr -inst -cont '\.Aktiv Rutoken ECP 00 00Ivanov' -store uMy

Установка всех личных сертификатов с Рутокена в uMy:

Code: Select all

csptestf -absorb -cert -pattern 'rutoken'

Заметка. В опции -pattern ‘rutoken‘ может быть другим в зависимости от подключенного токена.
В опции -pattern так же можно указать пустые ‘ ‘ чтобы установить все сертификаты в uMy. Пример:

Code: Select all

csptestf -absorb -cert -pattern ''

Установка личного сертификата в контейнер ридера HDIMAGE:

Code: Select all

certmgr -inst -file '/путь-до-сертификата/имя-сертификата.cer' -cont '<путь к контейнеру, начинающийся на \.>' -store uMy

Пример установки личного сертификата с пин-кодом 12345 по ГОСТ 2012 в контейнер ридера HDIMAGE

Code: Select all

certmgr -inst -provtype 80 -provname "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -cont '<путь к контейнеру, начинающийся на \.>' -pin 12345 -file '/путь-до-сертификата/имя-сертификата.cer'

Установка корневого сертификата удостоверяющего центра для учетной записи guest в uRoot (для учетной записи root установку нужно произвести в mRoot):

Code: Select all

certmgr -inst -cert -file '/путь-до-сертификата/имя-сертификата.cer' -store uRoot

Установка списка отозванных сертификатов (CRL) для учетной записи guest в uca (для учетной записи root установку нужно произвести в mca):

Code: Select all

certmgr -inst -crl -file '/путь-до-файла/имя-файла.crl' -store uca

Установка цепочки промежуточных сертификатов для учетной записи guest в uca (для учетной записи root установку нужно произвести в mca):

Code: Select all

certmgr -inst -cert -file '/путь-до-файла/имя-файла.p7b' -store uca

Для просмотра установленных сертификатов воспользуйтесь командой:

Просмотр корневых сертификатов:

Code: Select all

# для учетной записи guest
certmgr -list -store uRoot
# для учетной записи root
certmgr -list -store mRoot

Просмотр содержимого сертификата:

Code: Select all

certmgr -list -file '/путь-до-сертификата/имя-сертификата.cer'

Удаление сертификатов. Удалить личный сертификат под номером 1 можно командой:

после чего ввести цифру 1 для подтверждения.

Удалить корневой сертификат под номером 1

Code: Select all

# для учетной записи guest
certmgr -delete 1 -store uRoot
# для учетной записи root
certmgr -delete 1 -store mRoot

Удалить все сертификаты:

Code: Select all

# удалить все сертификаты
certmgr -delete -all
# удалить все сертификаты из хранилища uMy
certmgr -delete -store uMy
# удалить все сертификаты из хранилища uRoot для учетной записи guest
certmgr -delete -store uRoot
# удалить все сертификаты из хранилища mRoot для учетной записи root
certmgr -delete -store mRoot

Экспорт сертификатов на другую машину
Закрытые ключи к сертификатам находятся тут: /var/opt/cprocsp/keys.
Поэтому эти ключи переносятся просто: создаем архив и переносим на нужную машину в тот же каталог.

Экспорт сертификата:

Переносим эти файлы на машину и смотрим, какие контейнеры есть:

Code: Select all

csptest -keyset -enum_cont -verifycontext -fqcn

И как обычно, связываем сертификат и закрытый ключ:

Code: Select all

certmgr -inst -file 1.cer -cont '\.HDIMAGEcontainer.name'

Если закрытый ключ и сертификат не подходят друг к другу, будет выведена ошибка:

Code: Select all

Can not install certificate
Public keys in certificate and container are not identical

Использование cptools
В версии КриптоПРО 5 появилась графическая утилита для работы с сертификатами — cptools.
Для запуска cptools откройте терминал и введите

Image Image
Image Image
Так же, с его помощью, можно установить сертификат из токена в хранилище uMy.

Создание запроса и получение сертификата в УЦ.

Для создания запроса потребуется:

  • DN (cn=Test User,e=ca@porteus.org)
  • имя контейнера (в локальном хранилище hdimage: \.HDIMAGEtest)
  • имя файла запроса (test.req)

Внимание! Для использования проверки подлинности клиента в браузере потребуется также указать, что запрос создается по ГОСТ 2001 и добавляется тип применения подлинности клиента: -provtype 75 -certusage «1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2».
С помощью опции -certusage можно указать OID назначение сертификата
Назначение сертификата представляется в сертификате объектным идентификатором, присвоенным этой политике, — OID. Если в сертификате указано несколько политик, то это означает, что сертификат соответствует всем этим политикам списка.

Типы применения:

Code: Select all

        OID 	                       Назначение
1.3.6.1.5.5.7.3.1 	        Аутентификация сервера
1.3.6.1.5.5.7.3.2 	        Аутентификация клиента
1.3.6.1.5.5.7.3.3 	        Подписывание кода
1.3.6.1.5.5.7.3.4 	        Защищенная электронная почта
1.3.6.1.5.5.7.3.8 	        Простановка штампов времени
1.3.6.1.5.5.7.3.9               Может использоваться для формирования электронной подписи OCSP-запросов
1.3.6.1.4.1.311.10.5.1          Цифровые права
1.3.6.1.4.1.311.10.3.12 	Подписывание документа

Объектные идентификаторы (OID) определяют отношения, при осуществлении которых электронный документ, подписанный ЭЦП, будет иметь юридическое значение. OID, зарегистрированные в Удостоверяющем центре, включаются состав следующих расширений сертификата ключа подписи: Key Usage (использование ключа), Extended Key Usage (расширенное использование ключа), Application Policy (политики применения сертификата).

Code: Select all

cryptcp -creatrqst -dn "cn=Test User,e=ca@porteus.org" -provtype 75 -nokeygen -cont '\.HDIMAGEtest' -certusage "1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2" test.req

Более подробная информация про опции утилиты cryptcp

Показать содержимое запроса:

  • Откройте в браузере ссылку http://www.cryptopro.ru/certsrv (тестовый удостоверяющий центр КриптоПро).
  • Нажмите «Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64».
  • Вставьте в поле «Base-64-шифрованный запрос сертификата» содержимое файла test.req и нажмите кнопку «Выдать».
  • Сохраните файл по ссылке «Загрузить цепочку сертификатов» (по умолчанию предлагается имя certnew.p7b)

Просмотреть полученный сертификат:

Установите сертификат удостоверяющего центра:

Code: Select all

certmgr -inst -file 'certnew.p7b' -store uRoot

нажмите 1

Установите сертификат клиента (введите пароль на контейнер \.HDIMAGEtest при запросе):

Code: Select all

certmgr -inst -file 'certnew.p7b' -store uMy -cont '\.HDIMAGEtest' -inst_to_cont

нажмите 2

Проверка цепочки сертификатов.

Внимание! В кэше сертификатов для выпущенного сертификата должны присутствовать корневые сертификаты удостоверяющих центров. В противном случае он будет недоступен в плагине для браузера!

Сертификаты популярных удостоверяющих центров

Code: Select all

Удостоверяющий Центр 	                                   Источник 	                      Сертификаты
ЗАО «Национальный удостоверяющий центр» 	https://www.nucrf.ru/info/ 	https://www.nucrf.ru/download/nucrf.p7b
Удостоверяющий центр СКБ Контур 	https://ca.kontur.ru/about/certificates (выбрать 2015 год) 	http://cdp.skbkontur.ru/certificates/kontur-root-2015.crt

Для проверки можно скопировать персональный сертификат в файл:

Code: Select all

cryptcp -copycert -dn E=user@test.ru -df personal.cer

Запуск с отладкой цепочки:

Code: Select all

CP_PRINT_CHAIN_DETAIL=1 cryptcp -copycert -dn E=user@test.ru -df personal.cer

То есть нам надо установить сертификат УЦ с CN=uc skb kontur (root):

Code: Select all

certmgr -inst -store uRoot -file kontur-root-2015.crt

После этого:

Code: Select all

cryptcp -copycert -dn E=user@test.ru -df personal.cer

Всё в порядке и сертификат виден в плагине Cades.

Электронная подпись.
Для электронной подписи файла необходимо указать сертификат и имя подписываемого файла:

Примечание: Проще всего для указания сертификата использовать адрес e-mail.

Code: Select all

cryptcp -sign -dn E=user@test.ru -der zayavlenie.pdf

где

  • -dn E=user@test.ru — сертификат по e-mail;
  • -der — использовать формат DER для файла подписи (по умолчанию используется формат Base64);
  • zayavlenie.pdf — имя подписываемого файла.

На выходе появляется файл zayavlenie.pdf.sig, содержащий как сам подписываемый файл, так и электронную подпись.

Для проверки подписи выполните:

Code: Select all

cryptcp -verify zayavlenie.pdf.sig

Показано, кто подписывал и что подпись проверена.

Для извлечения файла необходимо указать его имя в конце команды проверки подписи

Code: Select all

cryptcp -verify zayavlenie.pdf.sig zayavlenie.pdf

Работа с криптографическими провайдерами.

Для просмотра доступных криптографических провайдеров:

Более детальная информация о криптографическом провайдере 75:

Code: Select all

cpconfig -defprov -view -provtype 75

Установка криптографического провайдера 75 по умолчанию:

Code: Select all

cpconfig -defprov -setdef -provtype 75 -provname "Crypto-Pro GOST R 34.10-2001 KC1 CSP"

Установка криптографического провайдера 80 по умолчанию:

Code: Select all

cpconfig -defprov -setdef -provtype 80 -provname "Crypto-Pro GOST R 34.10-2012 KC1 CSP"

Установка криптографического провайдера 81 по умолчанию:

Code: Select all

cpconfig -defprov -setdef -provtype 81 -provname "Crypto-Pro GOST R 34.10-2012 KC1 Strong CSP"

Linux 5.15.11-porteus #1 SMP Sat Dec 25 13:08:57 MSK 2021 x86_64 Intel(R) Core(TM) i5-6600K CPU @ up to 4.60GHz GenuineIntel GNU/Linux
MS-7A12 » [AMD/ATI] Navi 23 [Radeon RX 6600] [1002:73ff] (rev c7) » Vengeance LPX 16GB DDR4 K2 3200MHz C16

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Error code 0x00000000 криптопро linux
  • Error code 0x00000000 mac
  • Error code 0x0 0x2e3825e7 n
  • Error code 0cx000014c
  • Error code 099 canon

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии