Криптопро командная строка. Установка КриптоПро на RELS

Установленная система ROSA Enterprise Linux Server 6.7 в конфигурации «Стандартный сервер РОСА», доступ к репозиториям (для этого нужно использовать ключ, заранее полученный у службы поддержки, выполняя команду echo «<ключ>» > /etc/rosa-support-id-server с правами администратора).

Применимость

В инструкции описана установка СКЗИ КриптоПро CSP 4.0 для ROSA Enterprise Linux Server 6.7 для работы с Рутокен. Пример указан для 64-разрядной архитектуры AMD64, для 32-разрядной установка аналогична с точностью до указания установочных пакетов и папок.

Примечание
Когда не говорится о необходимости использования прав суперпользователя, подразумевается, что всё выполняется с правами пользователя, которым будет вестись работа в браузере firefox. Этот пользователь должен оставаться неизменным на протяжении всего описанного процесса

Получение установочных пакетов

Для установки СКЗИ КриптоПро CSP 4.0 для начала надо зарегистрироваться на сайте https://www.cryptopro.ru/ и со страницы загрузки https://www.cryptopro.ru/products/csp/downloads скачать версию 4.0 R2 для linux в формате rpm

Также сразу скачаем КриптоПро ЭЦП Browser plug-in версии 2.0 | отсюда

После этого браузер следует закрыть.

Установка

Для установки нужно распаковать полученный архив. Для этого откроем терминал (вкладка терминала расположена слева посередине панели запуска приложений)

и выполним следующие команды:

cd ~/Downloads/ tar -xvf linux-amd64.tgz tar -xvf cades_linux_amd64.tar.gz

Должна появиться папка с установочными файлами КриптоПро, в консоли можно перейти в неё командой

cd linux-amd64/

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

su

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

yum install redhat-lsb* ccid pangox-compat ./install.sh

Установка дополнительных компонентов КриптоПро

rpm -ivh cprocsp-rdr-pcsc-* lsb-cprocsp-pkcs11-* cprocsp-rdr-gui-gtk-*

Также стоит отметить пакеты поддержки устройств (токенов/ридеров/плат расширения). Эти пакеты находятся в архиве КриптоПро CSP, их названия начинаются с cprocsp-rdr- . При необходимости использования определенного устройства (например Рутокен ЭЦП) следует установить соответствующий пакет ( rpm -ivh cprocsp-rdr-rutoken* ). Также в архиве есть пакеты с драйверами (ifd-* ) их также следует установить при использовании соответствующего устройства (Рутокен S -> rpm -ivh ifd-rutokens* ).

Не следует устанавливать пакет cprocsp-rdr-gui, так как в связке с cprocsp-rdr-gui-gtk он нарушает работу графических компонентов.

Установка Browser Plug-in

cd .. rpm -ivh lsb-cprocsp-devel* yum install cprocsp-pki-2.0.0-amd64-cades.rpm yum install cprocsp-pki-2.0.0-amd64-plugin.rpm

Подключение токена

Теперь можно подключить рутокен к USB-порту компьютера

Запускаем в отдельном окне консоли программу pcscd с правами администратора (root). На данном этапе используется отладочный вариант запуска.

su killall pcscd pcscd -adfffff

После запуска не будем закрывать эту консоль (там можно будет видеть, как система общается со смарт-картой).

Для последующих команд будем использовать консоль, которую мы открыли первой. Для них права суперпользователя не требуются (можно набрать в терминале exit для отмены режима root).

Утилита должна увидеть устройство:

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

Редактирование списка доверенных узлов

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

firefox /etc/opt/cprocsp/trusted_sites.html

Вбиваем название сайта в строку «Добавить новый», нажимаем «+» и «Сохранить».

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

Для работы с сертификатами нужно установить сертификат удостоверяющего центра (в данном случае устанавливается непосредственно корневой сертификат) и сертификат с рутокена на локальное хранилище. Для этого нужно загрузить с сайта удостоверяющего центра файл, содержащий цепочку сертификатов (обычно файл с расширением.cer или.p7b) и список отозванных сертификатов. Они доступны по следующей ссылке (https://www.cryptopro.ru/certsrv/certcarc.asp). Нужно нажать «Загрузка цепочки сертификатов ЦС» и «Загрузка последнего базового CRL». В консоли нужно, используя права обычного пользователя, выполнить следующие команды:

/opt/cprocsp/bin/amd64/certmgr -inst -store uRoot -file ~/Downloads/certnew.p7b /opt/cprocsp/bin/amd64/certmgr -inst -crl -file ~/Downloads/certcrl.crl

Подробнее о программе certmgr можно узнать Теперь переходим к работе с контейнерами, расположенными на токене. Если на устройстве нет контейнеров, можно их создать. Для этого следует воспользоваться инструкцией в пункте . После установки пакетов (п. 5.1. и п. 5.2.) должна появится возможность видеть контейнеры на устройстве. Чтобы узнать путь к контейнеру, а также о самом факте его наличия, можно ввести следующее:

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

Теперь установим сертификат с рутокена в личное хранилище (uMy):

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

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

Примечание
Чаще всего расширение.cer соответствует сертификату, а.p7b - контейнеру, в котором может содержаться один или больше сертификатов (например их цепочка)

Создание тестового сертификата

Создание контейнера на жёстком диске

Если на устройстве нет контейнеров, можно их создать. Заходим на тестовый удостоверяющий центр (УЦ) КриптоПро (http://www.cryptopro.ru/certsrv/certrqma.asp) и заполняем требуемые поля (обязательно заполнять только поле «Имя:»). Нужно обязательно пометить ключ как экспортируемый. Стоит заметить, что для проверки, используемой в пункте «Проверка работы Browser Plug-in» нужно использовать стандарт 2001 года.

Нажимаем кнопку «Выдать >»




Теперь можно копировать контейнер на токен, но сначала надо узнать его название. Для этого нужно открыть консоль и выполнить следующую команду:

/opt/cprocsp/bin/amd64/list_pcsc

Также надо узнать полное название контейнера, полученного в ходе генерации сертификата:

/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifyc -fqcn

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

Затем используем эти названия в следующей команде:

/opt/cprocsp/bin/amd64/csptest -keycopy -contsrc "<полное название контейнера>" -contdest "\\.\<название токена>\<желаемое название контейнера>"


Теперь токен содержит контейнер. Можно вернуться к пункту «Установка сертификата с контейнера на токене (п. 7.3)», предварительно удалив сертификат, установленный из контейнера на жёстком диске (сгенерированного тестовым удостоверяющим центром).

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

Удалить этот сертификат можно использовав следующую команду:

/opt/cprocsp/bin/amd64/certmgr -del

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

Проверка работы электронной подписи с использованием Browser Plug-in

Для проверки работы Browser Plug-in можно использовать следующий ресурс: https://www.cryptopro.ru/sites/default/files/products/cades/demopage/simple.html Стоит также проверить, не установлены ли лишние сертификаты, ресурс работает корректно только если установлен единственный сертификат (можно использовать команду /opt/cprocsp/bin/amd64/certmgr -del). В случае правильной работы страница будет выглядеть примерно следующим образом.

Обобщение

В целом схема алгоритма установки выглядит следующим образом.

Рекомендации к использованию утилит командной строки КриптоПро

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

Для удобства стоит сначала сделать так, чтобы можно было запускать программы, не прописывая каждый раз путь к ним. Это можно сделать многими способами. В данном случае предлагается поступить следующим образом:

В консоли получаем права суперпользователя (набираем su и вводим пароль) Вводим следующую команду (для указания пути всем пользователям кроме суперпользователя):

echo "export PATH=$PATH:/opt/cprocsp/bin/amd64:/opt/cprocsp/sbin/amd64" >> /etc/profile

Если нужно то же самое проделать для суперпользователя, используем команду

echo "export PATH=$PATH:/opt/cprocsp/bin/amd64:/opt/cprocsp/sbin/amd64" >> /root/.bash_profile

Перезагружаемся

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

Использование псевдонимов

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

/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifyc -fqcn

В консоли получаем права суперпользователя (набираем su и вводим пароль) Вводим следующую команду:

echo "alias conts="/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifyc -fqcn"" >> /etc/bashrc

Перезагружаемся Пример работы можно видеть ниже.

Литература по использованию утилит командной строки

Для получения информации по остальным программам лучше использовать команду с флагом «--help» (к примеру csptest --help).

Некоторые полезные команды

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

csptest -keyset -deletekeyset -container "<полное название контейнера>"

Показать доверенные сайты:

cpconfig -ini "\local\Software\Crypto Pro\CAdESplugin\TrustedSites" -view

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

csptest -keycopy -contsrc "<полное название исходного контейнера>" -contdest "<полное название контейнера назначения>"

Смена криптопровайдера по умолчанию (доступные типы и названия можно посмотреть командой cpconfig -defprov -view_type):

cpconfig -defprov -setdef -provtype <тип провайдера> -provname <название провайдера>

Узнать версию КриптоПро:

csptest -keyset -verifycont

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

cpconfig -license -view

Ввод лицензии (ключ пишется без кавычек):

cpconfig -license -set <номер лицензии>

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

csptest -keyset -enum_cont -verifyc -fqcn

Сегодняшнюю небольшую запись я решил посветить теме создания электронной цифровой подписи средствами криптопровайдера «КриптоПРО». Речь пойдет о Bat файле, который можно будет использовать для автоматизации подписи электронных документов.

Для того что бы автоматизировать процесс подписывания электронных документов нам понадобится:
1) Крипто-ПРО CSP;
2) USB Ключ (например рутокен), вставленный в USB порт;
3) Блокнот (Notepad.exe);
4) Установленные сертификаты для Вашего ключа;

Камнем преткновения во всей этой истории является файл csptest.exe который находится в директории КриптоПро (по умолчанию C:\Program Files\Crypto Pro\CSP\csptest.exe ).

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

Cd C:\Program Files\Crypto Pro\CSP\ и csptest

Мы увидим все возможные параметры данного exe файла.

select from: -help print this help -noerrorwait do not wait for any key on error -notime do not show time elapsed -pause Wait for keyboard input after completion so that you may check memory and other resources usage -reboot Call DestroyCSProvider() of last used CSP at exit Services (cryptsrv*, HSM, etc) not affected -randinit Initialize system rng with srand(x) (default: time) -showrandinit Show system rng initialization value -stack Measure stack usage select from: -lowenc low level encryption/decryption test -sfenc simplified level message encryption/decryption test -cmslowsign CMS low level message signing test -cmssfsign CMS simplified level message signing/verifying test -lowsign low level message signing test -lowsignc low level message signing test with cycle Use "-lowsign -repeat NN" instead! -sfsign simplified level message signing/verifying test -ipsec ipsec tests -defprov default provider manipulations -testpack Pack of several tests -property certificate obtain/install property for secret key linking -certkey change provider name in certificate secret key link -context provider context tests -absorb absorbs all certs from containers with secret key linking -drvtst proxy-driver test -signtool SDK signtool analog -iis manage IIS -hsm manage HSM-client -rpcc RPC over SSL client -rpcs RPC over SSL server -oid oid info/set/get -passwd set/change password -keycopy copy container -keyset create (open) keyset -tlss start tls server -tlsc start tls client -tls TLS tests -prf PRF tests -hash hash test -makecert certificate issuing test -certprop show certificate properties -rc verify pkcs#10/certificate signature -cmsenclow CMS low level message encryption/decryption test -sfse simplified level message SignedAndEnveloped test -stress stress test for Acquire/ReleaseContext -ep public key export test -enum CSP parameters enumeration -cpenc CP/Crypto level (advapi32) encryption tests -setpp SetProvParam tests -perf Performance tests -speed Speed tests and optimal function mask setting -testcont Install/Uninstall test containers -install CSP installation information, clearing out CSP -version Print CSP version

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

Csptest -sfsign : -sign Sign data from input filename -verify Verify signature on data specified by input filename -help Print this help : -in Input filename to be signed or verified -out Output PKCS#7 filename -my Cert from CURRENT_USER store to process data -MY Cert from LOCAL_MACHINE store to process data -detached Deal with detached signature -add Add sender certificate to PKCS#7 -signature Detached signature file -alg Hash algorithm: SHA1, MD5, MD2, GOST - default -ask Acquire csp context using my cert (default: none) -base64 Input/output with base64DER conversion -addsigtime Add signing time attribute -cades_strict Strict signingCertificateV2 attribute generation -cades_disable Disable signingCertificateV2 attribute generation

Таким образом, чтобы подписать файл через cmd средствами csptest.exe нужно вызвать команду:

Csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my ООО МоиПрограммы Иванов Иван Иванович

где:
-my — Указывает владельца ключа;
-in — Указывает какой файл нужно подписывать. Если файл находится не в папке с csptest то нужно указывать полный путь.;
-out — Указывает имя файла подписи;

Проверить подпись можно на сайте Госулсуг по данной ссылке .

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

Csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my ООО МоиПрограммы Иванов Иван Иванович -addsigtime -add

Если же нам нужна подпись в осоединенном формате, то добавим еще один параметр:

Csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my ООО МоиПрограммы Иванов Иван Иванович -addsigtime -add -detached

Примечание: Если подпись документа выполняется с ошибкой
Unable to open file
An error occurred in running the program.
.\signtsf.c:321:Cannot open input file.
Error number 0x2 (2).
Не удается найти указанный файл.

при вызове, как в последнем примере, и Вы уверены в правильности путей в параметре -in и -out, попробуйте создать подпись по первому примеру, а после выполнить команду с полным набором параметров!!!

Основную команду для подписи мы получили. Теперь немного упростим процедуру. Сделаем bat файл, при запуске которого будет подписывать файл Secret.txt, находящийся в тойже папке что и bat файл. Откроем блокнот и запишем слудующий код:

Chcp 1251 set CurPath=%cd% cd C:\Program Files\Crypto Pro\CSP call csptest -sfsign -sign -in %CurPath%\Secret.txt -out %CurPath%\Secret.txt.sig -my ООО МоиПрограммы Иванов Иван Иванович -addsigtime -add -detached cd %CurPath%

Нажимаем «Файл» -> «Сохранить как» -> ЗадаемИмя с.bat -> «Сохранить»
Собсвенно и все. Для справки:
chcp 1251 — Задает кодировку для CMD. Необходимо для валидной обработки русских букв в коде;
set CurPath=%cd% — Сохраняет путь текущей директории CMD в переменную CurPath;
cd — Задает текущий путь CMD;
call — Запускает программу;