- КриптоПро в Linux контейнере для использования КЭП от ФНС
- Установка сертификатов на Linux
- Установка .cer (только открытая часть)
- Установка из .key (скопированные с носителя 6 файлов ключа)
- Установка сертификата с токена\флэш-накопителя
- Установка открытой части в контейнер закрытого ключа
- Установка корневых сертификатов и списков отзыва
- Установка корневого сертификата удостоверяющего центра
- Через терминал
- Через графический интерфейс
- Установка списка отозванных сертификатов
- Установка цепочки промежуточных сертификатов
- Директория с контейнерами КриптоПро CSP на жёстком диске (HDIMAGE)
- Директория на Windows
- Директория на macOS
КриптоПро в Linux контейнере для использования КЭП от ФНС
С Нового Года от Индивидуальных Предпринимателей (ИП) и директоров Обществ с
Ограниченной Ответственностью (ООО) требуют использовать Квалифицированную
Электронную Подпись (КЭП) выданную Федеральной Налоговой Службой (ФНС).
Это требует от пользователей ряда действий:
- Купить токен (похожее на флешку устройство для хранения КЭП)
- Настроить КриптоПро на своём рабочем месте
- Добавить свой сертификат в хранилище сертификатов на рабочем месте
- Настроить работу со всеми теми сервисами где КЭП будет использоваться
Ниже будет пример, как можно настроить контейнер Linux для работы с КЭП от ФНС,
а так же сервисов nalog.ru, gosuslugi.ru, moedelo.com и diadoc.kontur.ru (на этих тестировалось, но будет работать и на других, хотя и потребует дополнительных действий).
Мотивация для настройки именно в таком виде:
- Подойдёт для любого Linux дистрибутива
- Однажды сделав легко запускать на любой из версий с Linux и на любом из компьютеров с Linux
- Желающие настроить локально без контейнера легко смогут повторить по шагам описанным в Dockerfile
В предлагаемом вариант настройка следующая:
- На хост систему устанавливается pcsc (соответствующие пакеты входят во многие дистрибутивы) соответствующее вашему токену (на сайте токена подробно описываются настройки, например для Рутокена есть такое описание)
- В контейнер прокидывается socket от фоновой программы pcscd
- Внутри контейнера установлено всё необходимое, достаточно только добавить личный сертификат
- Используется браузер firefox прямо из контейнера
Могут быть разные варианты этой схемы.
Описанный подход позволяет пользоваться КЭП от ФНС под любым дистрибутивом Linux.
Тестировалось с Рутокен ЭЦП 3.0 (должно работать и с любыми другими, которые поддерживаются pcsc и КриптоПро).
Репозиторий с Dockerfile — https://github.com/YuraBeznos/cryptopro-in-container
Сам образ не предлагается т.к. лицензии на входящее программное обеспечение не позволяют это, хотя конечно, никто не может запретить создать свой образ и хранить его у себя.
- Установить всё необходимое для работы токена на хост системе, обычно это pcsc и библиотеки к нему (смотреть на сайте производителя)
- Проверить на хост системе, что токен определяется:
# pcsc_scan Using reader plug'n play mechanism Scanning present readers. 0: Aktiv Rutoken ECP 00 00 Mon Dec 19 22:36:07 2022 Reader 0: Aktiv Rutoken ECP 00 00 Event number: 0 Card state: Card inserted,
- Скачать все необходимые пакеты в папку с Dockerfile
- Это может занять время и эту процедуру можно проходить в самом контейнере
- Например плагины можно поставить в самом Firefox, а папку с расширением потом скопировать из пользовательской
docker run --rm -ti -v `pwd`/:/something -v /run/pcscd/pcscd.comm:/run/pcscd/pcscd.comm -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix"$DISPLAY" cryptopro-in-container:first /bin/bash -i # Где /run/pcsсd/pcscd.comm сокет для обращений # /tmp/.X11-unix доступ к активной сессии # DISPLAY переменная определяющая где открывать окна # something папка внутри контейнера с содержимым той папки из которой запускаете
root@d66b9560c771:/# csptest -keyset -enum_cont -fqcn -verifyc CSP (Type:80) v5.0.10010 KC1 Release Ver:5.0.12455 OS:Linux CPU:AMD64 FastCode:READY:AVX. AcquireContext: OK. HCRYPTPROV: 17693171 \\.\Aktiv Rutoken ECP 00 00\0c686f35c-328c-0cf8-e404-900dcf68a53 OK. Total: SYS: 0.010 sec USR: 0.040 sec UTC: 0.820 sec [ErrorCode: 0x00000000]
- Копировать публичный сертификат с токена в файл (подставив имя своего криптоконтейнера) certmgr -export -dest mine.crt -container ‘\\.\Aktiv Rutoken ECP 00 00\0c686f35c-328c-0cf8-e404-900dcf68a53’
- Установить свой сертификат внутри контейнера (подставив имя своего криптоконтейнера) certmgr -install -store uMy -file mine.crt -cont ‘\\.\Aktiv Rutoken ECP 00 00\0c686f35c-328c-0cf8-e404-900dcf68a53’
- Запустить браузер firefox и пользоваться необходимыми сайтами.
Поздравляю, теперь вы можете используя токен аутентифицироваться на таких сайтах как nalog.ru и gosuslugi.ru, подписывать документы в diadoc.kontur.ru и сдавать отчётность в moedelo.ru .
Прикрепляю сам Dockerfile (в репозитории может быть более свежая версия https://github.com/YuraBeznos/cryptopro-in-container ):
# 2022 December FROM debian:stable@sha256:880aa5f5ab441ee739268e9553ee01e151ccdc52aa1cd545303cfd3d436c74db ENV DEBIAN_FRONTEND noninteractive ENV PATH="$:/opt/cprocsp/bin/amd64/" # Downloaded from https://www.cryptopro.ru/fns_experiment ADD csp-fns-amd64_deb.tgz /cryptopro # Downloaded from https://www.rutoken.ru/support/download/pkcs/#linux COPY librtpkcs11ecp_2.6.1.0-1_amd64.deb /cryptopro # Downloaded from https://restapi.moedelo.org/eds/crypto/plugin/api/v1/installer/download?os=linux&version=latest COPY moedelo-plugin_*_amd64.deb /cryptopro # Downloaded from install.kontur.ru COPY kontur.plugin_amd64.deb /cryptopro # Downloaded from https://ds-plugin.gosuslugi.ru/plugin/upload/Index.spr COPY IFCPlugin-x86_64.deb /cryptopro # Downloaded from https://www.rutoken.ru/support/download/get/rtPlugin-deb-x64.html COPY libnpRutokenPlugin_*_amd64.deb /cryptopro RUN apt-get update && \ apt-get install -y whiptail libccid libpcsclite1 pcscd pcsc-tools opensc \ libgtk2.0-0 libcanberra-gtk-module libcanberra-gtk3-0 libsm6 \ firefox-esr && \ cd /cryptopro/fns-amd64_deb && \ dpkg -i /cryptopro/librtpkcs11ecp_*_amd64.deb && \ sed -i s#install_gui#install# _FNS_INSTALLER.sh && \ ./_FNS_INSTALLER.sh && \ dpkg -i /cryptopro/fns-amd64_deb/cprocsp-pki-cades-64_*_amd64.deb && \ dpkg -i /cryptopro/fns-amd64_deb/cprocsp-rdr-gui-gtk-64_*_amd64.deb && \ dpkg -i /cryptopro/fns-amd64_deb/cprocsp-pki-plugin-64_*_amd64.deb && \ dpkg -i /cryptopro/fns-amd64_deb/cprocsp-cptools-gtk-64_*_amd64.deb && \ dpkg -i /cryptopro/fns-amd64_deb/cprocsp-rdr-pcsc-64_*_amd64.deb && \ dpkg -i /cryptopro/fns-amd64_deb/cprocsp-rdr-rutoken-64_*_amd64.deb && \ dpkg -i /cryptopro/fns-amd64_deb/cprocsp-rdr-cryptoki-64_*_amd64.deb && \ dpkg -i /cryptopro/moedelo-plugin_*_amd64.deb && \ dpkg -i /cryptopro/kontur.plugin_amd64.deb && \ dpkg -i /cryptopro/IFCPlugin-x86_64.deb && \ dpkg -i /cryptopro/libnpRutokenPlugin_*_amd64.deb # Downloaded from https://www.cryptopro.ru/sites/default/files/products/cades/extensions/firefox_cryptopro_extension_latest.xpi COPY firefox_cryptopro_extension_latest.xpi /usr/lib/firefox-esr/distribution/extensions/ru.cryptopro.nmcades@cryptopro.ru.xpi # Downloaded from install.kontur.ru (firefox addon) COPY kontur.toolbox@gmail.com.xpi /usr/lib/firefox-esr/distribution/extensions/kontur.toolbox@gmail.com.xpi # Downloaded from https://ds-plugin.gosuslugi.ru/plugin/upload/Index.spr COPY addon-1.2.8-fx.xpi /usr/lib/firefox-esr/distribution/extensions/pbafkdcnd@ngodfeigfdgiodgnmbgcfha.ru.xpi # Downloaded from https://addons.mozilla.org/ru/firefox/addon/adapter-rutoken-plugin/ COPY rutokenplugin@rutoken.ru.xpi /usr/lib/firefox-esr/distribution/extensions/rutokenplugin@rutoken.ru.xpi CMD ["bash"]
Стоит добавить, что лицензия на КриптоПро идёт в составе сертификата (записывается на токен) выданного в ФНС. Если спустя время лицензию перестанут предоставлять, то криптопро позволяет работать в демо режиме ну и наконец можно приобрести. Ввод лицензии потребует дополнительные шаги.
Надеюсь это поможет пользователям Linux операционок пользоваться КЭП от ФНС без лишней головной боли.
Установка сертификатов на Linux
- Открыть «Инструменты КриптоПро», вкладка «Сертификаты»;
- Нажать «Импортировать ключи».
По умолчанию при импорте ключ копируется на ваш ПК. Если требуется использовать сертификат на съёмном носителе, его нужно скопировать на носитель и после установить;
Перейти в место хранения сертификата, выбрать его и нажать «Открыть»;
Ввести пароль от сертификата, заданный при выгрузке, и нажать «ОК»;
В новом окне можно задать пароль на сертификат. Если пароль не нужен, оставить поля пустыми и нажать «ОК»;
- Сертификат появится в списке сертификатов.
- Открыть «Инструменты КриптоПро», вкладка «Сертификаты»;
- Нажать «Показать расширенные» и поставить галку «Отключить автовыбор хранилища (использовать текущее)».
Если галку не ставить, «КриптоПро» автоматически будет определять хранилище для сертификатов. Личные сертификаты попадут в хранилище «Другие пользователи»; - Окно закроется, на вкладке появится строка с установленным сертификатом.
- После установки сертификат появится на вкладке «Сертификаты».
- Подключить накопитель или токен к вашему ПК;
- В «Инструментах КриптоПро» перейти на вкладку «Контейнеры» и выбрать нужный контейнер на носителе;
- Нажать «Установить сертификат»;
- После установки сертификат появится на вкладке «Сертификаты».
- Поставить галку «Отключить автовыбор хранилища (использовать текущее)»;
- В выпадающем меню выбрать «Доверенные корневые центры сертификации»;
- Нажать «Установить сертификаты», в открывшемся меню найти файл сертификата центра сертификации и нажать «Открыть»;
- Может появиться сообщение-предупреждение о том, что установка корневых сертификатов несет риск безопасности. Нужно нажать «ОК»;
- Внизу окна появится сообщение «Установка завершена». Если его развернуть, появится информация о совершенном действии.
Установка списка отозванных сертификатов
Выполнить команду:/opt/cprocsp/bin/amd64/certmgr -inst -crl -file ~/Загрузки/.crl
Установка цепочки промежуточных сертификатов
Выполнить команду:/opt/cprocsp/bin/amd64/certmgr -inst -cert -file ~/Загрузки/.p7b -store CA
Директория с контейнерами КриптоПро CSP на жёстком диске (HDIMAGE)
Директорией (или HDIMAGE) в КриптоПро CSP обозначается место хранения контейнеров с ключами электронной подписи на системном диске.
Директория на Windows
При выборе в качестве носителя для создания контейнера «Директория» (Использовать для хранения ключей директорию на жестком диске) файлы контейнера будут записаны по следующему пути:
Обратите внимание, каталог «AppData» является скрытым и чтобы в него попасть нужно включить отображение скрытых файлов или набрать «%appdata%» (без кавычек) прямо в адресной строке проводника.
Для быстрого доступа можно нажать WIN + R и ввести следующий адрес:
В этой директории вы увидите стандартные файлы контейнеров в папках формата хххххххх.000
Внутри будут файлы с расширением *.key. Это и есть контейнер криптопро с закрытым и открытым ключом, а также сертификатом, если он был установлен в контейнер.Директория на macOS
Контейнер КриптоПро CSP на маке находится в директории:
Чтобы открыть директорию нужно запустить Finder, в меню выбрать «Переход» -> «Переход к папке» или Shift-⌘-G.
Введите путь:В открывшейся папке выберите подпапку с именем пользователя.
В ней вы найдёте папки с контейнерами КриптоПро.Директория с контейнерами КриптоПро CSP на жёстком диске (HDIMAGE) обновлено: 3 марта, 2023 автором: ЭЦП SHOP
Установите программу которая заранее напомнит об окончании сроков!
Плюс функции подписания любых документов электронной подписью!— Без посещения ФНС
— Без очередей
— Предварительная проверка данных
— Лицензия КриптоПро CSP и USB-токен в «одном окне»
Установка .cer (только открытая часть)
Перейти в выпадающем меню в нужное хранилище сертификатов и нажать «Установить сертификаты»;
Перейти в место хранения сертификата, выбрать его и нажать «Открыть»;
Установка из .key (скопированные с носителя 6 файлов ключа)
- Скопировать папку с файлами в папку локального хранения контейнеров «КриптоПро», по умолчанию «/var/opt/cprocsp/keys/имя_пользователя»;
Установка сертификата с токена\флэш-накопителя
Установка открытой части в контейнер закрытого ключа
Выполнить команду:/opt/cprocsp/bin/amd64/certmgr -inst -inst_to_cont -ask-container -pin «пин-код токена» -file “путь к файлу сертификата”
Пример:/opt/cprocsp/bin/amd64/certmgr -inst -inst_to_cont -ask-container -pin «12567» -file /path/to/certificate.cer
Установка корневых сертификатов и списков отзыва
Установка корневого сертификата удостоверяющего центра
Вам необходимо воспользоваться любым из способов:
Через терминал
Выполнить команду: /opt/cprocsp/bin/amd64/certmgr -inst -cert -file ~/Загрузки/.cer -store uRoot
Через графический интерфейс
- Открыть «Инструменты КриптоПро», нажать «Показать расширенные»;