Преподобный паисий святогорец
О том, что было, мы с вами узнаем из книг или уроков истории. А вот будущие события, вызывающие неизменный интерес у...
Установленная система 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/и ввести пароль, после этого ввести команды для инсталляции:
yum install redhat-lsb* ccid pangox-compat ./install.shТакже стоит отметить пакеты поддержки устройств (токенов/ридеров/плат расширения). Эти пакеты находятся в архиве КриптоПро CSP, их названия начинаются с cprocsp-rdr- . При необходимости использования определенного устройства (например Рутокен ЭЦП) следует установить соответствующий пакет ( rpm -ivh cprocsp-rdr-rutoken* ). Также в архиве есть пакеты с драйверами (ifd-* ) их также следует установить при использовании соответствующего устройства (Рутокен S -> rpm -ivh ifd-rutokens* ).
Не следует устанавливать пакет cprocsp-rdr-gui, так как в связке с cprocsp-rdr-gui-gtk он нарушает работу графических компонентов.
Теперь можно подключить рутокен к 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 можно использовать следующий ресурс: 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Для того, что бы увидеть параметры той или иной глобальной опции, достаточно вызвать данный файл с этой опцией, например
Csptest -sfsign
Таким образом, чтобы подписать файл через 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
— Запускает программу;