Меню Рубрики

Установка криптопро csp centos

Установка крипто про csp и php расширений на Centos 7

Установка крипто про csp и php расширений на Centos 7

Добрый день уважаемые читатели и подписчики блога, сегодня я хочу вам рассказать как производится установка крипто про csp и php расширений на Centos 7. Кто не в курсе Крипто про это программный комплекс криптографических утилит, созданный на основе CA Windows, но под российские стандарты. Его основные функции, это организация структуры PKI и работа с ЭЦП (электронно-цифровыми подписями). Сама установка crypto pro csp и cadescom в операционных системах Windows дело очень простое, а вот в терминале CentOS 7, уже повеселее. Ниже мы рассмотрим подробную инструкцию, как это делать.

Как установить Крипто про и расширения для языка PHP

И так, напоминаю, что мы с вами уже слегка знакомились с crypto pro, точнее с его последствиями, после установки, а именно решалась ошибка 80072EE2 при обновлении Windows, где приходилось его удалять и вычищать систему, сегодня задача обратная, установка, да не просто, а в терминале Centos 7. Ставить мы будем специальное расширение. Расширение для языка PHP предназначено для встраивания криптографических операций в серверные приложения на языке PHP с использованием сертифицированного СКЗИ КриптоПро CSP.

Расширение предоставляет программный интерфейс, аналогичный КриптоПро ЭЦП Browser plug-in, для выполнения следующих криптографических операций:

  • работа с сертификатами;
  • создание и проверка подписи форматов CAdES BES, CAdES-T, CAdES-X Long Type 1;
  • шифрование и расшифрование данных.

Вот по этой ссылке http://cpdn.cryptopro.ru/default.asp?url=content/cades/phpcades.html, выложен алгоритм установки крипто про csp на CentOS 7, но в очень сжатом виде, прочитав его у меня осталось очень много вопросов, я если честно был не приятно удивлен, что на этот вопрос, практически нет никакой информации, особенно на официальном сайте.

Собираем libphpcades

Для того, чтобы собрать libphpcades, у вас во первых, должна быть установлена CentOS 7. Далее мы должны установить пакеты boost-devel и php-devel, приступаем, добавляем репозиторий и ставим boost-devel.

Следующим шагом, мы ставим пакет php-devel с помощью команды.

Далее ставим lsb пакет (Linux Standard Base)

Далее переходим в папку root, если вы не в ней, с помощью команды

И скачиваем дистрибутив крипто про csp 4

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

Далее распаковываете архив с помощью tar и даете возможность запускать скрипт install.sh

Все теперь, можно устанавливать самый главный компонент libphpcades, сам крипто про csp 4

Далее после установки, прописываем переменные окружения, или перемещаемся в папку /opt/cprocsp/

Затем до установим, еще два пакета cprocsp-rdr-gui-gtk и lsb-cprocsp-devel

Затем следует установить пакет cprocsp-pki-2.0.0-cades.rpm из состава КриптоПро ЭЦП SDK . Скачиваем архив, лтбо вручную и потом через ssh передаем, либо скачиваем через wget. Скачивайте КриптоПро ЭЦП SDK 2.0, именно ее, так как она содержит пакет cprocsp-pki-2.0.0-cades.rpm.

Посмотреть список пакетом, можно командой

  • lsb-cprocsp-kc1-64-4.0.0-4.x86_64
  • cprocsp-pki-cades-2.0.0-1.x86_64
  • lsb-cprocsp-base-4.0.0-4.noarch
  • lsb-cprocsp-capilite-64-4.0.0-4.x86_64
  • cprocsp-curl-64-4.0.0-4.x86_64
  • lsb-cprocsp-devel-5.0.0-4.noarch
  • lsb-cprocsp-rdr-64-4.0.0-4.x86_64
  • cprocsp-rdr-gui-gtk-64-4.0.0-4.x86_64
  • cprocsp-pki-plugin-2.0.0-1.x86_64
  • В файле /opt/cprocsp/src/phpcades/Makefile.unix указать путь к исходным текстам нужной версии PHP в переменной PHPDIR, но перд этим вы должны скачать исходные файлы php, нужной версии. Смотрим какая версия php у вас установлена.

PHP 5.6.30 (cli) (built: Jan 19 2017 08:09:42)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
You have mail in /var/spool/mail/root

Затем идете на официальный сайт php http://php.net/releases/ и находите там нужную вам версию, у меня это 5.6.3

У меня файл Makefile.unix выглядит вот так:

Теперь находясь в /opt/cprocsp/src/phpcade в зависимости от разрядности системы выполнить:

eval `/opt/cprocsp/src/doxygen/CSP/../setenv.sh —64`; make -f Makefile.unix

или для 32 битной системы

eval `/opt/cprocsp/src/doxygen/CSP/../setenv.sh —32`; make -f Makefile.unix

У вас должна начаться собираться libphpcades, но бывают и грабли как в моем случае. Были вот такого типа:

[root@bx1 phpcades]# eval `/opt/cprocsp/src/doxygen/CSP/../setenv.sh —64`; make -f Makefile.unix
g++ -DLINUX -DUNIX -DHAVE_LIMITS_H -DHAVE_STDINT_H -I/opt/cprocsp/include/ -I/opt/cprocsp/include/cpcsp -I/opt/cprocsp/include/pki -I/opt/cprocsp/include/pki/atl -I/opt/cprocsp/include/pki/cppcades -I/opt/cprocsp/include/pki/cplib -I/root/php -I/root/php/main -I/root/php/Zend -I/root/php/TSRM -DSIZEOF_VO > PHPCadesCPSigners.cpp:1: error: expected constructor, destructor, or type conversion before string constant
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/new:40,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/new_allocator.h:33,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/x86_64-redhat-linux/bits/c++allocator.h:34,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/allocator.h:48,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/string:43,
from /opt/cprocsp/include/pki/cplib/StringProxy.h:50,
from /opt/cprocsp/include/pki/cplib/DateTime.h:31,
from /opt/cprocsp/include/pki/cppcades/CPPCadesDate.h:4,
from /opt/cprocsp/include/pki/cppcades/CPPCadesCPSigner.h:9,
from PHPCadesCPSigner.h:4,
from PHPCadesCPSigners.cpp:3:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/exception:35: error: expected declaration before end of line
make: *** [PHPCadesCPSigners.o] Error 1
You have mail in /var/spool/mail/root

Еще может быть ошибка error: expected constructor, destructor, or type conversion before, тут есть синтаксическая ошибка смотрите файл.

источник

КРИПТО-ПРО на Linux Centos 6

КриптоПро — набор криптографических утилит и вспомогательных программ, в основном использующихся в программах российских разработчиков для генерации ЭЦП, работы с сертификатами и шифрования передаваемых данных.

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

Например, провайдерам необходимо оперативно реагировать на «Черные списки рунета», логично, что решение должно быть автономным и максимально удобным — с этим замечательно справляется Linux.

В моем случае CryptoPro будет работать в паре с eToken.

Установка

1. Архив с программным обеспечением

КриптоПро доступен по ссылке http://www.altlinux.org/КриптоПро (требуется регистрация)

2. Установка не отличается сложностью.

В первом случае есть скрипт для инсталляции, во втором необходимо поставить RPM пакет (токен до момента установки драйверов необходимо извлечь из сервера).

В процессе установки под CentOS 6.5, мне также понадобился модуль поддержки eToken (cprocsp-rdr-jacarta-3.6.1-3.6.219-1.x86_64) идет в поставке КриптоПРО 3.6.

rpm -i cprocsp-rdr-jacarta-3.6.1-3.6.346-1.x86_64.rpm

3. После установки, прописываем переменные окружения, или перемещаемся в папку «/opt/cprocsp/»

export PATH=»$PATH:$(ls -d /opt/cprocsp/bin/*|tr ‘\n’ ‘:’)»

4. Проверяем лицензию.

С сайта КриптоПро выдаётся лицензия на три месяца.

# cpconfig -license -view Server license: 36360-U0030-01C97-HQ92Y-##### Expires: 3 month(s) 0 day(s) Client license: 36360-U0030-01C97-HQ92Y-##### Expires: 3 month(s) 0 day(s)

5. Вставляем ключ eToken и проверяем вывод list_pcsc:

# ./list_pcsc available reader: AKS ifdh 00 00

Читайте также:  Установка быть внимательным на уроке

Утилита доступна после установки пакета

# rpm -i cprocsp-rdr-pcsc-64-3.9.0-4.x86_64.rpm

Как вариант штатными средствами:

# lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 002: ID 203a:fff9 Bus 002 Device 039: ID ####:#### Aladdin Knowledge Systems eToken Pro 64k (4.2)

6. Добавляем считыватель:

# ./cpconfig -hardware reader -add «AKS ifdh 00 00» Adding new reader: Nick name: AKS ifdh 00 00 Succeeded, code:0x0

7. Просмотр списка настроенных считывателей:

Nick name: AKS ifdh 00 00 Connect name: Reader name: AKS ifdh 00 00 Nick name: FLASH Connect name: Reader name: FLASH Nick name: HDIMAGE Connect name: Reader name: ��������� ������� �� ������� �����

Первый ридер «AKS ifdh 00 0» — это наш токен, последний — локальное хранилище. Контейнеры HDIMAGE живут по адресу «/var/opt/cprocsp/keys/ /»

Создание контейнера.

1. Создаём ключевой контейнер:

# ./csptest -keyset -newkeyset -cont ‘\\.\HDIMAGE\Bank’

2. Создаём запрос на сертификат:

# ./cryptcp -creatrqst -dn «E=test@test.ru,CN=Ivan,L=Moscow,O=Bank» -nokeygen -both -ku -cont Bank cert_request.req

3. Можно (нужно) запросить сертификат в своем центре сертификации.

Как вариант, откройте в браузере ссылку http://www.cryptopro.ru/certsrv/certrqxt.asp (тестовый удостоверяющий центр КриптоПро) вставьте в поле «Base-64-шифрованный запрос сертификата» содержимое файла cert_request.req и нажмите кнопку «Выдать». Затем сохраните файл по ссылке «Загрузить сертификат» (по умолчанию предлагается имя certnew.cer).

4. Устанавливаем, полученный от УЦ сертификат, в указанный ключевой контейнер:

# ./certmgr -inst -store uMy -file certnew.cer -cont ‘\\.\HDIMAGE\Bank’

5. Проверка установленного сертификата

# ./certmgr -lis 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 : E=test@test.ru, CN=Ivan, L=Moscow, O=Bank Serial : 0x12000065ECE1AF809C191F54300000000065EC SHA1 Hash : 0x1a11194ef7fe628fe371ba0cf1d0421b7bd23448 Not valid before : 14/10/2014 14:52:55 UTC Not valid after : 14/10/2015 15:02:55 UTC PrivateKey Link : Yes. Container : HDIMAGE\\Bank.000\2829

ЭЦП и шифрование файла

1. Подпись файла

# ./cryptcp -sign -dn «E=test@test.ru,CN=Ivan,L=Moscow,O=Bank» -nocert -der test.txt test.sig CryptCP 3.41 (c) «Crypto-Pro», 2002-2013. Command prompt Utility for file signature and encryption. The following certificate will be used: RDN:Bank, Moscow, Ivan, test@test.ru Valid from 14.10.2014 14:52:55 to 14.10.2015 15:02:55 Certificate chain is not checked for this certificate: RDN:Bank, Moscow, Ivan, test@test.ru Valid from 14.10.2014 14:52:55 to 14.10.2015 15:02:55 Certificate chain is not checked for this certificate (error code 10000): /dailybuildsbranches/CSP_3_9/CSPbuild/CSP/samples/CPCrypt/Certs.cpp:416: 0x20000133 Do you want to use this certificate ([Y]es, [N]o, [C]ancel)?y Certificate chains are checked. Folder ‘./’: test.txt. CryptoPro CSP: Type password for container «Bank» Password: Signing the data. Signed message is created. [ReturnCode: 0]

2. Проверка подписи

# ./cryptcp -verify -dn «E=test@test.ru,CN=Ivan,L=Moscow,O=Bank» -nocert -der test.sig test1.sig root@localhost amd64]# ./cryptcp -verify -dn «E=test@test.ru,CN=Ivan,L=Moscow,O=Bank» -nocert -der test.sig test1.txt CryptCP 3.41 (c) «Crypto-Pro», 2002-2013. Command prompt Utility for file signature and encryption. The following certificate will be used: RDN:Bank, Moscow, Ivan, test@test.ru Valid from 14.10.2014 14:52:55 to 14.10.2015 15:02:55 Certificate chain is not checked for this certificate: RDN:Bank, Moscow, Ivan, test@test.ru Valid from 14.10.2014 14:52:55 to 14.10.2015 15:02:55 Certificate chain is not checked for this certificate (error code 10000): /dailybuildsbranches/CSP_3_9/CSPbuild/CSP/samples/CPCrypt/Certs.cpp:416: 0x20000133 Do you want to use this certificate ([Y]es, [N]o, [C]ancel)?y Certificate chains are checked. Folder ‘./’: test.sig. Signature verifying. Signer: Bank, Moscow, Ivan, test@test.ru Certificate chain is not checked for this certificate (error code 10000): /dailybuildsbranches/CSP_3_9/CSPbuild/CSP/samples/CPCrypt/Certs.cpp:416: 0x20000133 Do you want to use this certificate ([Y]es, [N]o, [C]ancel)?y Signature’s verified. [ReturnCode: 0]

3. Сравнение оригинального и расшифрованного после подписи файла

# diff test.txt test1.txt # ll | grep test| grep txt -rw-r—r—. 1 root root 12 Окт 14 19:12 test1.txt -rw-r—r—. 1 root root 12 Окт 14 12:51 test.txt

4. Зашифровываем файл:

root@localhost amd64]# ./cryptcp -encr -der -dn «CN=webserver» test.txt test.msg CryptCP 3.41 (c) «Crypto-Pro», 2002-2013. Command prompt Utility for file signature and encryption. The following certificate will be used: RDN:webserver Valid from 14.10.2014 08:39:19 to 14.10.2015 08:49:19 Certificate chain is not checked for this certificate: RDN:webserver Valid from 14.10.2014 08:39:19 to 14.10.2015 08:49:19 Certificate chain is not checked for this certificate (error code 10000): /dailybuildsbranches/CSP_3_9/CSPbuild/CSP/samples/CPCrypt/Certs.cpp:416: 0x20000133 Do you want to use this certificate ([Y]es, [N]o, [C]ancel)?y Certificate chains are checked. Encrypting the data. Encrypted message is created. [ReturnCode: 0]

5. Расшифровываем файл

# ./cryptcp -decr -dn «CN=webserver» test.msg test.out CryptCP 3.41 (c) «Crypto-Pro», 2002-2013. Command prompt Utility for file signature and encryption. The following certificate will be used: RDN:webserver Valid from 14.10.2014 08:39:19 to 14.10.2015 08:49:19 Certificate chain is not checked for this certificate: RDN:webserver Valid from 14.10.2014 08:39:19 to 14.10.2015 08:49:19 Certificate chain is not checked for this certificate (error code 10000): /dailybuildsbranches/CSP_3_9/CSPbuild/CSP/samples/CPCrypt/Certs.cpp:416: 0x20000133 Do you want to use this certificate ([Y]es, [N]o, [C]ancel)?y Certificate chains are checked. Decrypting the data. 0%CryptoPro CSP: Type password for container «webserver» Password: Message is decrypted. [ReturnCode: 0]

Работа с токеном.

Не отличается от выше написанного, за исключением того, что в качестве хранилища сертификатов мы используем «\\.\AKS ifdh 00 00\ »

# ./csptestf -keyset -newkeyset -makecert -cont ‘\\.\AKS ifdh 00 00\test’ -keytype exchange CSP (Type:75) v3.9.8000 KC1 Release Ver:3.9.8171 OS:Linux CPU:AMD64 FastCode:READY:AVX. AcquireContext: OK. HCRYPTPROV: 36484147 GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 KC1 CSP Container name: «test» Exchange key is not available. Attempting to create an exchange key. Press keys. [. ] CryptoPro CSP: Set pin-code on produced container «test». Pin-code: an exchange key created. Self signed certificate created: E=test@cryptopro.ru, CN=test Certificate stored in container. Keys in container: exchange key Total: [ErrorCode: 0x00000000]

Вопросы без ответа

Для тестирования можно создать самоподписанный сертификат с закрытым ключом, но почему-то данный сертификат не появляется среди установленных » ./certmgr -list». Почему так происходит, пока разбираюсь.

Читайте также:  Установка вакуумной пропитки статоров

источник

Работа с КриптоПро CSP

Назначение

Криптопровайдер КриптоПро CSP предназначен для:

  • авторизации и обеспечения юридической значимости электронных документов при обмене ими между пользователями, посредством использования процедур формирования и проверки электронной подписи (ЭП) в соответствии с отечественными стандартами ГОСТ Р 34.10-2001 / ГОСТ Р 34.10-2012 (с использованием ГОСТ Р 34.11-94 / ГОСТ Р 34.11-2012);
  • обеспечения конфиденциальности и контроля целостности информации посредством ее шифрования и имитозащиты, в соответствии с ГОСТ 28147-89;
  • обеспечения аутентичности, конфиденциальности и имитозащиты соединений по протоколу TLS;
  • контроля целостности системного и прикладного программного обеспечения для его защиты от несанкционированных изменений и нарушений правильности функционирования;
  • управления ключевыми элементами системы в соответствии с регламентом средств защиты.

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

Архив с программным обеспечением (КриптоПро CSP) можно загрузить c официального сайта www.cryptopro.ru, предварительно зарегистрировавшись на сайте.

Для ОС Astra Linux следует загрузить пакет:

Пробный период использования КриптоПро CSP составляет 3 месяца, по истечении которых необходимо приобрести полноценную лицензию.

К моменту написания статьи, была использована сертифицированная версия ПО «КриптоПро» «4.0 R4».

Для примера был проделан следующий алгоритм действий:

1) Загрузка архива с сертифицированной версией ПО «КриптоПро»:

Название полученного файла: «linux-amd64_deb.tgz».

2) Открыть «Терминал Fly» (alt+T)

3) Разархивируем скаченный архив в терминале командой:

tar -zxf linux-amd64_deb.tgz

5) Перейдем в директорию с ПО

cd linux-amd64_deb

6) выполним установку ПО с помощью запуска скрипта «install.sh» или «instal_gui.sh» командой:

sudo ./install_gui.sh

* Выбрать необходимые модули, библиотеки.

Описание необходимых пакетов КриптоПро

Пакет Описание
Базовые пакеты:
cprocsp-curl Библиотека libcurl с реализацией шифрования по ГОСТ
lsb-cprocsp-base Основной пакет КриптоПро CSP
lsb-cprocsp-capilite Интерфейс CAPILite и утилиты
lsb-cprocsp-kc1 Провайдер криптографической службы KC1
lsb-cprocsp-rdr Поддержка ридеров и RNG
Дополнительные пакеты:
cprocsp-rdr-gui-gtk Графический интерфейс для диалоговых операций
cprocsp-rdr-rutoken Поддержка карт Рутокен
cprocsp-rdr-jacarta Поддержка карт JaCarta
cprocsp-rdr-pcsc Компоненты PC/SC для ридеров КриптоПро CSP
lsb-cprocsp-pkcs11 Поддержка PKCS11

Для просмотра всех установленых пакетов Криптопро CSP, следует ввести команду:

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

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

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

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

библиотека libccid, libgost-astra , пакеты pcscd

Пакеты с модулем поддержки для:

После установки пакетов с модулем поддержки токена следует перезагрузить службу pcscd:

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

/opt/cprocsp/sbin/amd64/cpconfig -license -view

Установка лицензии

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

Носители и контейнеры

Идентификация токена

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

/opt/cprocsp/bin/amd64/csptest -card -enum -v -v

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

Проверить наличие носителей с контейнерами можно с помощью команды:
/opt/cprocsp/bin/amd64/csptest -keyset -verifycontext -enum -unique

в формате FQCN, отображается имя носителя:

В этом случае будет выведен список носителей с контейнерами в следующем формате:

Где \\.\HDIMAGE — локальный носитель, \\.\HDIMAGE\TestCont123 — название контейнера, \\.\Aktiv Rutoken ECP 00 00 — название носителя (токена).

Информация о контейнерах

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

/opt/cprocsp/bin/amd64/csptestf -keyset -container ‘ИМЯ’ -info

/opt/cprocsp/bin/amd64/csptestf -keyset -container ‘Shuhrat’ -info
CSP (Type:80) v5.0.10001 KC1 Release Ver:5.0.11233 OS:Linux CPU:AMD64 FastCode:READY:AVX.

AcquireContext: OK. HCRYPTPROV: 8981043
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP
Container name: «Shuhrat»
Signature key is available. HCRYPTKEY: 0x8f3b03
Exchange key is available. HCRYPTKEY: 0x8f9883
Symmetric key is not available.
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:’GOST 28147-89 MAC'(18) Long:’GOST 28147-89 MAC'(18)
DefaultLen:32 MinLen:8 MaxLen:32 Prot:0 Algid:00032799

Type:Encrypt Name:’GR 34.12 64 M'(14) Long:’GOST R 34.12-2015 64 Magma'(27)
DefaultLen:256 MinLen:256 MaxLen:256 Prot:0 Algid:00026160

Type:Encrypt Name:’GR 34.12 128 K'(15) Long:’GOST R 34.12-2015 128 Kuznyechik'(33)
DefaultLen:256 MinLen:256 MaxLen:256 Prot:0 Algid:00026161

Type:Hash Name:’GR 34.13 64 M MAC'(18) Long:’GOST R 34.13-2015 64 Magma MAC'(31)
DefaultLen:64 MinLen:8 MaxLen:64 Prot:0 Algid:00032828

Type:Hash Name:’GR 34.13 128 K MAC'(19) Long:’GOST R 34.13-2015 128 Kuznyechik MAC'(37)
DefaultLen:128 MinLen:8 MaxLen:128 Prot:0 Algid:00032829

Type:Hash Name:’GR34.11-12 256 HMAC'(20) Long:’GOST R 34.11-2012 256 HMAC'(27)
DefaultLen:256 MinLen:256 MaxLen:256 Prot:0 Algid:00032820

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

Virtual memory used: 15281652 KB
Virtual memory used by CSP: 116572 KB
Free virtual memory: 26053680 KB
Total virtual memory: 41335332 KB

Physical memory used: 14602360 KB
Physical memory used by CSP: 12576 KB
Free physical memory: 5857712 KB
Total physical memory: 20460072 KB

Key pair info:
HCRYPTKEY: 0x8f3b03
Alg > AlgClass: ALG_CLASS_SIGNATURE
AlgType: ALG_TYPE_GR3410
AlgSID: 73
KP_HASHOID:
1.2.643.7.1.1.2.2 (ГОСТ Р 34.11-2012 256 бит)
KP_DHOID:
1.2.643.2.2.35.1 (ГОСТ Р 34.10 256 бит, параметры по умолчанию)
KP_SIGNATUREOID:
1.2.643.2.2.35.1 (ГОСТ Р 34.10 256 бит, параметры по умолчанию)
Permissions:
CRYPT_READ
CRYPT_WRITE
CRYPT_IMPORT_KEY
0x800
0x2000
0x20000
0x100000
KP_CERTIFICATE:
Not set.

Key pair info:
HCRYPTKEY: 0x8f9883
Alg > 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_READ
CRYPT_WRITE
CRYPT_IMPORT_KEY
0x800
0x10000
0x20000
0x100000
KP_CERTIFICATE:
Subject: INN=007814508921, E=user@astralinux.ru, C=RU, CN=Махмадиев Шухрат, SN=Махмадиев
Valid : 18.10.2018 12:07:24 — 18.01.2019 12:17:24 (UTC)
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2

Container version: 2
Carrier flags:
This reader is removable.
This reader supports unique carrier names.
This carrier does not have embedded cryptography.
Keys in container:
signature key
exchange key
Extensions (maxLength: 1435):
ParamLen: 46
OID: 1.2.643.2.2.37.3.9
Critical: FALSE
Size: 19
Decoded size: 24
PrivKey: Not specified — 18.01.2020 07:31:07 (UTC)

Читайте также:  Установка значка опера на рабочий стол

ParamLen: 47
OID: 1.2.643.2.2.37.3.10
Critical: FALSE
Size: 19
Decoded size: 24
PrivKey: Not specified — 18.01.2020 07:31:12 (UTC)
Total: SYS: 0,020 sec USR: 0,180 sec UTC: 2,180 sec
[ErrorCode: 0x00000000]

Следует учесть про PIN-коды в контейнерах:

* если само устройство осуществляет аутентификацию (как к примеру токен), то PIN при создании не создаётся, а предъявляется, так как он — свойство устройства. Как следствие: у всех контейнеров на токене одинаковый PIN.

* если устройство не аутентифицирует (как HDIMAGE), то при создании контейнера, создаётся PIN-код. Следствие: у всех контейнеров, PIN-код на HDIAMGE может быть разным.

Проверка работы контейнера

Для того чтобы проверить работу контейнера (в том числе возможность выполнения разных операций при текущей лицензии), следует выполнить команду:

/opt/cprocsp/bin/amd64/csptestf -keyset -container ИМЯ -check

/opt/cprocsp/bin/amd64/csptestf -keyset -container Shuhrat -check

CSP (Type:80) v5.0.10001 KC1 Release Ver:5.0.11233 OS:Linux CPU:AMD64 FastCode:READY:AVX.

AcquireContext: OK. HCRYPTPROV: 28224051

GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC1 CSP

Signature key is available. HCRYPTKEY: 0x1b53883

Exchange key is available. HCRYPTKEY: 0x1b57e23

Symmetric key is not available.

License: Cert without license

Check verify signature on private key passed.

Check verify signature on public key passed.

Check import passed (import restricted).

Check verify signature on private key passed.

Check verify signature on public key passed.

Certificate in container matches AT_KEYEXCHANGE key.

PrivKey: Not specified — 18.01.2020 07:31:07 (UTC)

PrivKey: Not specified — 18.01.2020 07:31:12 (UTC)

Total: SYS: 0,030 sec USR: 0,140 sec UTC: 2,430 sec

Удаление контейнера

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

/opt/cprocsp/bin/amd64/csptestf -passwd -cont ‘\\.\Aktiv Rutoken ECP 00 00\TestCont’ -deletek

Копирование контейнера

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

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

Смена пароля на контейнер (снятие паролей с контейнера)

/opt/cprocsp/bin/amd64/csptestf -passwd -cont ‘\\.\Aktiv Rutoken ECP 00 00\TestContainer’ -change ‘новый_пароль’ -passwd ‘старый_пароль

В случае, если контейнеру с ключом не был задан PIN, следует воспользоваться командой:

/opt/cprocsp/bin/amd64/csptestf -passwd -cont ‘\\.\Aktiv Rutoken ECP 00 00\TestContainer’ -change ‘Ваш_новый_пароль’

Менеджер сертификатов КриптоПРО в Linux

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

Они делятся на четыре категории:

* личные сертификаты (ставятся в хранилище umy, где u = User, my — имя хранилища) — как правило для них есть закрытый ключ (и они требуют особой установки, чтобы в хранилище появилась ссылка на этот закрытый ключ). В результате с их использованием можно, например, подписать файл.

* корневые сертификаты — краеугольнй камень безопасности, так как цепочки доверия строятся от них, то их надо добавлять в хранилища осознанно и внимательно (ставятся в uroot, также администратор может поставить их в mroot, где m = Machine, такие сертификаты будут видны в read only в root-хранилищах всех пользователей)

* промежуточные сертификаты — появляются, когда есть промежуточные УЦ (головной -> промежуточный -> пользовательский). Прямое доверие к ним не требуется (ставятся в uca, также администратор может поставить их в mca). В это же хранилище ставятся CRL-и. Обычно точки получения промежуточных сертификатов и CRL-ей правильно указаны в пользовательских сертификатах, поэтому они автоматом выкачиваются и попадают в хранилище ucache. В общем про них можно ничего особо не знать и ничего не делать.

* сертификаты партнёров по общению, чтобы проверять их подписи и зашифровывать для них сообщения. Ставятся либо в umy (это беспорядок, но популярный), либо в uAddressBook

Установка

Пример установки личного сертификата, выданного УЦ Министерства Обороны Российской Федерации

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

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

2) Из под учетной записи пользователя ставится в uca, из под учетной записи администратора ставить в mca:

3) В опции -pattern можно указать пустые чтобы установить все сертификаты в uMy. Пример:

4) В случае, если личный сертификат извлечен, следует изпользовать опцию -file :

certmgr -inst -file cert.cer -store uMy

5) Хранилища пользователей хранятся в /var/opt/cprocsp/users

Просмотр

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

Удаление

Удаление сертификата из хранилища КриптоПро:

certmgr -delete 1 (номер сертификата)

certmgr -del -all (удаление всех сертификатов)

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

Закрытые ключи к сертификатам находятся тут: /var/opt/cprocsp/keys .

Поэтому эти ключи переносятся просто: создаем архив и переносим на нужную машину в тот же каталог.

/opt/cprocsp/bin/amd64/certmgr -export -dest cert.cer

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

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

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

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

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

/opt/cprocsp/bin/amd64/cryptcp -copycert -dn CN=Имя_вашего_сертификата -df /temp/сертификат.cer

Можно указать другое поле сертификата: CN, E, SN, OGRN, SNILS и тд.

Из вывода следует, что у нас отсутствует некий сертификат в цепочке сертификатов. Можно запустить вышеуказанную команду в режиме debug(отладки):

В нашем примере, из логов можно сделать вывод, что нам надо установить сертификат УЦ МО с CN=Министерство обороны Российской Федерации:

Для того, чтобы убедиться в устранении ошибки, можно повторно в режиме отладки запустить команду. При правильно установленной цепочке сертификатов, статус у сертификата будет = CERT_TRUST_NO_ERROR

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

Подпись можно делать двумя способами:

* attached (присоединённая), тогда результирующий файл — это CMS-сообщение, внутрь которого упакованы данные и атрубуты (типа подписи). Формат сообщения соответствует международному стандарту, поэтому извлекать данные оттуда можно любыми утилитами, типа cryptcp / csptest / openssl / certutil (на windows).

* detached (отсоединённая), тогда результирующий файл — это CMS-сообщение БЕЗ исходных данных, но с атрибутами (типа подписи). В этом случае для проверки надо «принести» исходный файл. Разумеется он остаётся неизменным и его можно смотреть cat-ом

Про CMS-сообщения, есть хорошая статья на Хабре

источник