Cryptopro linux создать контейнер

Содержание
  1. КриптоПро в Linux контейнере для использования КЭП от ФНС
  2. Где взять документацию по установке? Какие пакеты ставить?
  3. Почему не работает команда csptest -keycopy -src cont ‘\.\FLASH\qwerty’ -d cont ‘\.\HDIMAGE\qwerty’ ?
  4. У меня есть сертификат и ключи. Почему у меня не получается установить сертификат при помощи cryptcp -instcert?
  5. При запуске любой утилиты из дистрибутива CSP я получаю ошибку: “/usr/lib/libcurl.so: cannot open shared object: No such file or directory”. Как это исправить?
  6. Какие есть готовые утилиты для работы с CSP и где взять на них документацию?
  7. В какую директорию устанавливается CSP? Где я могу найти утилиты для работы с CSP?
  8. Я хочу использовать готовые утилиты из состава КриптоПро CSP для работы с шифрованием и подписями. Какие пакеты мне для этого нужно поставить?
  9. Как сделать новые закрытые ключи?
  10. Как проверить, работоспособен ли контейнер с закрытыми ключами?
  11. Как посмотреть список закрытых ключей?

КриптоПро в 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». Этот документ входит в состав документации на CSP, его можно скачать на странице загрузки CSP или в разделе «Документация»: http://cryptopro.ru/support/docs .

    Если у Вас FreeBSD/Solaris/AIX — см. «Руководство администратора безопасности. FreeBSD/Solaris/AIX».

    Почему не работает команда csptest -keycopy -src cont ‘\\.\FLASH\qwerty’ -d cont ‘\\.\HDIMAGE\qwerty’ ?

    Проблема может быть в том, что нельзя создавать два контейнера с одинаковым именем.

    Попробуйте назвать копию как-нибудь иначе, например:

    csptest -keycopy -src cont ‘\\.\FLASH\qwerty’ -d cont ‘\\.\HDIMAGE\qwerty1’

    У меня есть сертификат и ключи. Почему у меня не получается установить сертификат при помощи cryptcp -instcert?

    сryptcp -instcert устанавливает сертификат только при условии, что запрос на него был создан на этой же машине этим же пользователем операционной системы при помощи команды cryptsp –creatrqst.

    В общем случае, для установки сертификатов рекомендуется использовать утилиту certmgr.

    При запуске любой утилиты из дистрибутива CSP я получаю ошибку: “/usr/lib/libcurl.so: cannot open shared object: No such file or directory”. Как это исправить?

    Установите пакет curl (рекомендуется использовать версию, которая поставляется вместе с CSP, поскольку работоспособность с этой версией проверена; если вместе с CSP пакет не был получен, установите пакет из репозитория своего дистрибутива или скачайте подходящую версию с сайта: http://curl.haxx.se/download.html ). Затем проверьте, что ссылка из секции [apppath] из файла /etc/opt/cprocsp/config.ini
    “libcurl.so” =

    указывает на библиотеку libcurl из состава пакета curl ( обычно путь имеет вид /usr/lib/libcurl.so.4 ).

    Какие есть готовые утилиты для работы с CSP и где взять на них документацию?

    Основными утилитами для работы с CSP версии 3.0 являются cryptcp и storeman; с CSP версии 3.6 – cryptcp и certmgr.

    Утилиты storeman и certmgr предназначены для работы с сертификатами и списками отзыва. Их основным назначением является установка сертификатов и списков отзыва, их удаление, просмотр установленных.

    Документация по storeman в формате pdf входит в состав документации на CSP. Для certmgr есть man. Для его просмотра наберите
    % man 8 certmgr

    В какую директорию устанавливается CSP? Где я могу найти утилиты для работы с CSP?

    CSP устанавливается в /opt/cprocsp.

    Утилиты для работы с функциями криптопровайдера находятся в
    /opt/cprocsp/bin/ia32 – если Вы используете архитектуру ia32, и в
    /opt/cproscp/bin/x64 – если Вы используете архитектуру x64.

    Служебные утилиты находятся в
    /opt/cprocsp/sbin/ia32 – если Вы используете архитектуру ia32, и в
    /opt/cproscp/sbin/x64 – если Вы используете архитектуру x64.

    Конфигурационные файлы находятся в
    /etc/opt/cprocsp .

    Пользовательская информация (информация об установленных сертификатах, ключи и тому подобное) находится в
    /var/opt/cprocsp .

    Я хочу использовать готовые утилиты из состава КриптоПро CSP для работы с шифрованием и подписями. Какие пакеты мне для этого нужно поставить?

    Для этого нужно установить следующие пакеты в следующем порядке:
    lsb-cprocsp-base
    lsb-cprocsp-rdr
    lsb-cprocsp-kc1
    lsb-cprocsp-capilite .
    Или, если используется архитектура x64 — соответствующие пакеты для x64. Описание пакетов и инструкции по установке даны в документе «Руководство администратора безопасности. Linux» из документации на CSP. Если Вы используете Solaris/FreeBSD/AIX — см. руководство администратора безопасности для Solaris/FreeBSD/AIX .

    Как сделать новые закрытые ключи?

    Обычно ключи создаются вместе с запросом на сертификат. Если Вам требуется создать ключи и запрос на сертификат, воспользуйтесь утилитой cryptcp(документация на неё входит в состав документации на CSP, см. раздел «Работа с запросами на сертификат»).

    Если требуется просто сделать новые ключи, можно воспользоваться утилитой csptest. Она находится в директории /opt/cprocsp/bin/.

    Создание контейнера пользователя:
    csptest -keyset -newkeyset -cont ‘\\.\имя считывателя\имя контейнера’

    Создание контейнера компьютера:

    Как проверить, работоспособен ли контейнер с закрытыми ключами?

    Открыть(проверить) контейнер можно утилитой csptest. Она находится в директории /opt/cprocsp/bin/ :

    Открыть(проверить) контейнер пользователя:
    csptest -keyset -check -cont ‘\\.\имя считывателя\имя контейнера’

    Открыть(проверить) контейнер компьютера:
    csptest -keyset -check -cont ‘\\.\имя считывателя\имя контейнера’ -machinekeyset

    где имя считывателя:
    HDIMAGE, если используете жесткий диск для хранения ключей
    FLASH, если используете флешку
    FAT12_0, если используете дискету

    Как посмотреть список закрытых ключей?

    Список контейнеров с закрытыми ключами можно посмотреть утилитой csptest. Она находится в директории /opt/cprocsp/bin/

    Перечисление контейнеров пользователя:
    csptest -keyset -enum_cont -verifycontext -fqcn

    Перечисление контейнеров компьютера:
    csptest -keyset -enum_cont -verifycontext -fqcn -machinekeys

    В полученном списке имена контейнеров будут представлены в том виде, в котором их воспринимают все бинарные утилиты, входящие в дистрибутив CSP (\\.\\).

    Источник

    Читайте также:  Python linux scripts example
Оцените статью
Adblock
detector