Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Установка CryptoPro + CadesPlugin + IFCPlugin(Госуслуги, ЕСИА) - работает!!!  (Прочитано 48663 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Extremal1981

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Чтобы на сегодняшний день получить полноценное рабочее место, с возможность аутентификации и подписи документов с помощью ЭЦП на различных госпорталах, на базе Ubuntu LTS с софтовым криптопровайдером и поддержкой ГОСТ алгоритмов, мной было потрачено не мало времени. Информацию собирал по крупицам из разных источников, в итоге всё получилось! Решил написать мини мануал, может кому пригодится.

И так что имеем изначально и на чём всё тестировалось на работоспособность:
1. ОС Ubuntu 14.04/16.04/18.04
2. CryptoPro x64 версии 4.0.9944-5 с версией библиотеки libcppkcs11.so совместимой с Ростелекомовским плагином(IFCPlugin) для ЕСИА.
3. ЭЦП (действующий сертификат + контейнер с закрытым ключём)на rutoken или на обычной флешке.
4. Firefox и chromium-gost.
5. IFCPlugin x64 версии 3.0.0 совместимый с библиотекой libcppkcs11.so из сборки CryptoPro 4.0.9944-5
6. CryptoPro ЭЦП browser plugin версии 2.0.0

Весь нужный софт был собран с сети и находился в свободном доступе. Всё объединил в один архив: ubuntu_crypto.zip

И так по порядку
1. Устанавливаем брузеры, Firefox собственно доступен из коробки, а вот chromium-gost можно взять из архива, ну или самый свежий https://github.com/deemru/chromium-gost/releases. chromium-gost может понадобиться на некоторых гос. порталах, он имеет поддержку TLS с ГОСТ алгоритмами.

2. Устанавливаем CryptoPro:
    2.1 Добавляем поддержку LSB и alien - понадобится для установки ЭЦП браузер плагин (CadesPlugin).
        sudo apt install lsb lsb-core alien    2.2 Заходим в папку linux-amd64_deb и устанавливаем криптопровайдер.
        sudo ./install.sh        убеждаемся что ошибок нет, и все зависимости удовлетворены. Если чего то не хватает, всё есть в стандартных репах, устанавливаем нужные пакеты, и заново. Пока не пройдет без ошибок.
    2.3  Устанавливаем доп. пакеты для работы с ЭЦП:
sudo dpkg -i cprocsp-rdr-gui-64_4.0.9944-5_amd64.deb
sudo dpkg -i cprocsp-rdr-gui-gtk-64_4.0.9944-5_amd64.deb
#Поддержка алгоритмов класса1 и 2
sudo dpkg -i lsb-cprocsp-kc1-64_4.0.9944-5_amd64.deb
sudo dpkg -i lsb-cprocsp-kc2-64_4.0.9944-5_amd64.deb
#Обязательно установить библиотеки pkcs11
sudo dpkg -i lsb-cprocsp-pkcs11-64_4.0.9944-5_amd64.deb
    2.4. Далее если используем rutoken s. устанавливаем:
        sudo dpkg -i cprocsp-rsa-64_4.0.9944-5_amd64.deb
sudo dpkg -i cprocsp-rdr-pcsc-64_4.0.9944-5_amd64.deb
sudo dpkg -i cprocsp-rdr-rutoken-64_4.0.9944-5_amd64.deb
sudo dpkg -i ifd-rutokens_1.0.1_amd64.deb
        Потребует так же установить зависимости pcsc и libusb ставим из стандартных репов.
        Так же, если используем rutoken S можно установить свежий драйвер драйвер для его поддержки. Для других типов Rutoken, вроде как, драйвера не требуются, впрочем как и софтовый криптопровайдер, но сам не проверял за неимением таковых.

3. Устанавливаем CadesPlugin с помощью alien.
sudo alien -kci cprocsp-pki-2.0.0-amd64-cades.rpm
sudo alien -kci cprocsp-pki-2.0.0-amd64-plugin.rpm
# С первого раза не все файлы копируются, например не копируется /opt/cprocsp/lib/amd64/libnpcades.so
sudo alien -kci cprocsp-pki-2.0.0-amd64-plugin.rpm
Делаем ссылку на установленный плагин
sudo ln -s  /opt/cprocsp/lib/amd64/libnpcades.so /usr/lib/firefox-addons/plugins/libnpcades.so
4. Устанавливем IFCPlugin для работы с порталами с ЕСИА(Госуслуги).
sudo dpkg -i IFCPlugin-x86_64.deb    4.1 После успешной установки заменяем дефолтный файл /etc/ifc.cfg на файл ifc.cfg из архива.
    4.2 Обязательно делаем символьную ссылку на библиотеку pkcs11 из пакета CryptoPro для использования IFCPlugin
sudo ln -s /opt/cprocsp/lib/amd64/libcppkcs11.so.4.0.4 /usr/lib/mozilla/plugins/lib/libcppkcs11.so    4.3 Если мы хотим работать на Госуслугах через chromium-gost, необходимо ему подсунуть ссылку на плагин, так как разрабы этого плагина, почему-то забыли про существования chromium и в deb пакете с плагином присутствуют конфиги только для Firefox и google-chrome.
sudo ln -s /etc/opt/chrome/native-messaging-hosts/ru.rtlabs.ifcplugin.json /etc/chromium/native-messaging-hosts   
Всё! Установку завершили по сути. Осталось теперь при первом входе на порталы установить расширения для CadeslPlugin и (Firefox сам предложит его установить при первом входе на портал где он используется) и установить Расширение для плагина Госуслуг в chromium-gost

   
     Далее, для работы необходимо установить в CryptoPro по порядку: корневой сертификат, промежуточные сертификаты, и личный с ссылкой на контейнер с закрытым ключём:

 1. Нужно убедиться что CryptoPro видит наш контейнер с закрытым ключём, обратите внимание что контейнер должен быть доступен обычному пользователю, под которым вы работаете в системе:
/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifycontext -fqcn
CSP (Type:80) v4.0.9017 KC2 Release Ver:4.0.9944 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 12104259
\\.\HDIMAGE\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
\\.\Aktiv Co. Rutoken S 00 00\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
OK.
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,320 sec
[ErrorCode: 0x00000000]

2.Устанавливаем корневые и промежуточные сертификаты, чтобы цепочка сертификатов была доверенной:
sudo /opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file путь_к_файлу_с_сертификатом
sudo /opt/cprocsp/bin/amd64/certmgr -inst -store uca -file путь_к_файлу_с_сертификатом

3. Устанавливаем личный сертификат с ссылкой на наш контейнер содержащий закрытый ключ:
/opt/cprocsp/bin/amd64/certmgr -inst -store umy -file путь_к_файлу_с_сертификатом -cont '\\.\HDIMAGE\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

4. Проверить что сертификат установлен и имеется ссылка на закрытый ключ (PrivateKey Link: Yes):
/opt/cprocsp/bin/amd64/certmgr -list -store umy
1-------
Issuer              : E=pki@omskportal.ru, OGRN=1045504013906, INN=005503080925, C=RU, S=55 Омская область, L=Омск, STREET=Красный Путь 109, OU=Отдел информационной безопасности, O=Главное управление информационных технологий и связи Омской области, CN=Государственный УЦ Омской области
Subject             : OGRN=1025501179274, SNILS=11335005899, INN=005505016361, C=RU, S=55 Омская область, L=Омск, O="БУЗОО ""ГП №3""", CN="XXXXX", STREET=XXXXX а, T=XXXXXт, G=XXXXXX, SN=XXXXXX
Serial              : 0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
SHA1 Hash           : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
SubjKeyID           : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before    : 09/04/2018  06:47:12 UTC
Not valid after     : 09/04/2019  06:57:12 UTC
PrivateKey Link     : Yes                 
Container           : HDIMAGE\\XXXXXXXX.000\XXXX
Provider Name       : Crypto-Pro GOST R 34.10-2012 KC2 CSP
Provider Info       : ProvType: 80, KeySpec: 1, Flags: 0x0
CA cert URL         : http://pki.omskportal.ru/dms/cdp2/guc_cer/guc.cer
CDP                 : http://pki.omskportal.ru/dms/cdp2/guc_crl/guc.crl
Extended Key Usage  : 1.3.6.1.5.5.7.3.2
                      1.3.6.1.5.5.7.3.4
                      1.2.643.5.1.29
                      1.2.643.5.1.24.2.6
                      1.2.643.2.2.34.6
                      1.2.643.100.2.1
=============================================================================

P.S
Если в контейнере с ключами хранятся связанные сертификаты например на rutoken s, то можно одной командой установить всю цепочку сертификатов вместе с ссылкой на данный ключевой контейнер:
/opt/cprocsp/bin/amd64/certmgr -inst -cont '\\.\Aktiv Co. Rutoken S 00 00\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

Если необходимо скопировать ключевой контейнер, например с rutoken на диск
/opt/cprocsp/bin/amd64/csptest -keycopy -contsrc '\\.\Aktiv Co. Rutoken S 00 00\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' -contdest '\\.\HDIMAGE\newcontname' -typedest 75 -typesrc 75

Собственно всё! Можно работать, с порталами имеющие аутентификацию с ЕСИА, и другими использующие CadesPlugin, в том числе с порталами использующий ГОСТ алгоритмы в TLS. Надеюсь кому нибудь этот пост поможет сэкономить немного времени.
« Последнее редактирование: 04 Марта 2019, 10:57:30 от Extremal1981 »
Дистрибутивы Linux - это как конструктор Lego, который даёт вам только кирпичики, и что из них вы построите зависит только от вас!
Удивительно, но это недостаток и преимущество одновременно

Оффлайн dobregnom

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
В Ubuntu 18.04 на пункте 2.3 при выполнении этой строки
sudo dpkg -i cprocsp-rdr-gui-64_4.0.9944-5_amd64.debвозникает ошибка
(Чтение базы данных … на данный момент установлено 172979 файлов и каталогов.)
Подготовка к распаковке cprocsp-rdr-gui-64_4.0.9944-5_amd64.deb …

Deleting of the device [reader,rndm,media]:
Nick name:bio_gui
Connection error.
Распаковывается cprocsp-rdr-gui-64 (4.0.9944-5) на замену (4.0.9944-5) …
Настраивается пакет cprocsp-rdr-gui-64 (4.0.9944-5) …
libXm.so.4 => not found
Warning: Unresolved dependencies.
You probably need to install motif package
from network or it might be in extras on CSP CD.
Try 'apt-get install libmotif3' or 'apt-get install openmotif'
 or 'yum install openmotif' or 'zypper install openmotif'.
 If you have a newer version of libmotif you can try
'ln -s /usr/lib64/libXm.so /usr/lib64/libXm.so.3'
or
'ln -s /usr/X11R6/lib64/libXm.so /usr/lib64/libXm.so.3'
See manual for details.
Adding bio_gui failed
Connection error.

Выполнение 'apt-get install libmotif3' или apt-get install openmotif' не помогает, т.к. эти пакеты не найдены.

Что делать? Прошу помощи!

Оффлайн galagankv

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Выполнение 'apt-get install libmotif3' или apt-get install openmotif' не помогает, т.к. эти пакеты не найдены.

Что делать? Прошу помощи!

sudo apt install motif*

Мне помогло.

У меня другая проблема. Вывод результата команды /opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifycontext -fqcn

\\.\FLASH\20719552@2018-05-17-�� ����-�������� - ����� - �����

Нашел решение:

Команда: /opt/cprocsp/bin/amd64/csptest -keyset -enum -verifycontext -fqcn | iconv -f cp1251

исправит кракозябру.
« Последнее редактирование: 07 Ноября 2018, 10:18:17 от galagankv »

Оффлайн dobregnom

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
--- У меня другая проблема

Сам только что решал эту проблему.
В общем, у меня имена контейнеров писались в Windows на кириллице, переименовал (копированием) в латиницу и все ок))

Оффлайн dobregnom

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Пункт 4.1 После успешной установки заменяем дефолтный файл /etc/ifc.cfg на файл ifc.cfg из архива - ОЧЕНЬ ВАЖНЫЙ!!!

Я, вроде, выполнял его, но в процессе установки и нескольких переустановок, как оказалось, файл был другой. И поэтому плагин госуслуг даже и не пытался читать с рутокена.

Оффлайн admer

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Добрый день!
А каким образом и на каком этапе вводит ключ лицензии на криптопро?

Оффлайн Extremal1981

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Посмотреть информацию о лицензии
/opt/cprocsp/sbin/amd64/cpconfig -license -view Ввести лицензионный ключ
/opt/cprocsp/sbin/amd64/cpconfig -license -set ваш лицензионный ключ
Дистрибутивы Linux - это как конструктор Lego, который даёт вам только кирпичики, и что из них вы построите зависит только от вас!
Удивительно, но это недостаток и преимущество одновременно

Оффлайн admer

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Благодарю

Оффлайн Dimidrole

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Всем привет! Прошу помощи, выбираю необходимый сертификат для входа на госуслуги далее ввожу пинкод, идет прогрузка страницы, но после нескольких секунд прогрузки окна снова окно, которое просит присоединить ключ.   :'Подскажите, куда копать дальше ?

Оффлайн Extremal1981

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Ставили CryptoPro и IFC плагин из моей сборки? Это важно, потому что именно в ней есть совместимый плагин Госуслуг с библиотекой libcppkcs11.so из данной сборки CryptoPro.
И пункт 4.1 не пропустите, без него тоже ничего не работает.
« Последнее редактирование: 29 Марта 2019, 07:59:36 от Extremal1981 »
Дистрибутивы Linux - это как конструктор Lego, который даёт вам только кирпичики, и что из них вы построите зависит только от вас!
Удивительно, но это недостаток и преимущество одновременно

Оффлайн Dimidrole

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Ставили CryptoPro и IFC плагин из моей сборки? Это важно, потому что именно в ней есть совместимый плагин Госуслуг с библиотекой libcppkcs11.so из данной сборки CryptoPro.
И пункт 4.1 не пропустите, без него тоже ничего не работает.

Делал все точно как у вас описано, но почему после ввода пароля идет прогрузка окна перехода в ЛК и опять слетает на предложение войти в ЛК, не могу понять почему  :-[

Оффлайн Extremal1981

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
1. Ещё раз убедитесь что сертификат с которым вы пытаетесь авторизоваться на Госуслугах имеет ссылку на закрытый ключ.
/opt/cprocsp/bin/amd64/certmgr -list -store umy
поле PrivateKey Link : Yes должно быть обязательно.
2. Убедитесь что контейнер с закрытым ключём физически доступен.
3. Проверьте через Cades Plugin что с сертификатом и ключём все ок и они доступны на тестовой странице CryptoPro
https://www.cryptopro.ru/sites/default/files/products/cades/demopage/simple.html
4. И чуть не забыл, есть ещё один момент с Госуслугами! Зайдите под своей учёткой без ключа, через обычный пароль, и где то там в настройках профиля был такой пункт Разрешить вход с помощью электронных средств, что то в этом роде, дословно не скажу сейчас. Вобщем его включить нужно!
5. Ещё один момент выяснился, для новых ЭЦП выпущенных по ГОСТ2012.
Сертификат должен находиться в контейнере вместе с закрытым ключём, если сертификат будет установлен в хранилище, но его не будет при этом ещё и в контейнере то IFCPlugin через библиотеку pkcs11 не увидит соответствующий контейнер.
Это пока не пофиксили и по другому не работает.Причем с ЭЦП по ГОСТ2001 такой ошибки небыло.
Нужно поставить КриптоПРО 5 версии и IFCPlugin 3.0.6 в ifc.conf тоже придётся изменить:
log = {
   level = "DEBUG";
}

config = {
cert_from_registry = "false";
set_user_pin = "true";
}

params =
(
  { name  = "Криптопровайдер VipNet CSP";
    alias = "VIPNet";
    type  = "capi";
    provider_name = "Infotecs Cryptographic Service Provider";
    provider_num  = "2";
skip_pkcs11_list = "true";
  },
 
  { name  = "Криптопровайдер VipNet CSP Linux";
    alias = "VIPNet_linux";
    type  = "capi_linux";
    provider_name = "Infotecs Cryptographic Service Provider";
    provider_num  = "2";
    skip_pkcs11_list = "true";
  },

  { name  = "Криптопровайдер КриптоПро CSP";
    alias = "CryptoPro";
    type  = "capi";
    provider_name = "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider";
    provider_num  = "75";
skip_pkcs11_list = "false";
  },
 
  { name  = "Криптопровайдер Рутокен CSP";
    alias = "CryptoPro_Rutoken";
    type  = "capi";
    provider_name = "GOST R 34.10-2001 Rutoken CSP";
    provider_num  = "75";
skip_pkcs11_list = "false";
  },

  { name  = "Криптопровайдер Signal-COM CSP";
    alias = "SignalCom";
    type  = "capi";
    provider_name = "Signal-COM CPGOST Cryptographic Provider";
    provider_num  = "75";
skip_pkcs11_list = "false";
  },

  { name  = "Криптопровайдер  LISSI-CSP";
    alias = "LISSI-CSP";
    type  = "capi";
    provider_name = "LISSI-CSP";
    provider_num  = "75";
skip_pkcs11_list = "false";
  },
 
  { name  = "Токен JaCarta";
    alias = "JaCarta";
    type  = "pkcs11";
alg   = "gost2001";
model = "eToken GOST,JaCarta GOST 2.0";
    lib_win   = "jcPKCS11-2.DLL";
    lib_linux = "libjcPKCS11-2.so.2.4.0";
    lib_mac   = "jcPKCS11-2";
  },
 
  { name  = "Рутокен ЭЦП";
    alias = "ruTokenECP";
    type  = "pkcs11";
alg   = "gost2001";
model = "Rutoken ECP";
    lib_win   = "rtpkcs11ecp.dll";
    lib_linux = "librtpkcs11ecp.so";
    lib_mac   = "librtpkcs11ecp.dylib";
  },

 {
        name = "CPPKCS11_2001";
        alias = "CPPKCS11_2001";
        type = "pkcs11";
        alg = "gost2001";
        model = "CPPKCS 3";
        lib_linux = "/opt/cprocsp/lib/amd64/libcppkcs11.so";
 },
 
 {
        name = "CPPKCS11_2012_256";
        alias = "CPPKCS11_2012_256";
        type = "pkcs11";
        alg = "gost2012_256";
        model = "CPPKCS 3";
        lib_linux = "/opt/cprocsp/lib/amd64/libcppkcs11.so";
 },
 
 {
        name = "CPPKCS11_2012_512";
        alias = "CPPKCS11_2012_512";
        type = "pkcs11";
        alg = "gost2012_512";
        model = "CPPKCS 3";
        lib_linux = "/opt/cprocsp/lib/amd64/libcppkcs11.so";
 }
 
);
Вобщем чуть чуть танцев с бубном и заработало!
« Последнее редактирование: 27 Апреля 2019, 09:57:15 от Extremal1981 »
Дистрибутивы Linux - это как конструктор Lego, который даёт вам только кирпичики, и что из них вы построите зависит только от вас!
Удивительно, но это недостаток и преимущество одновременно

Оффлайн burnet03

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Доброго времени суток! Сделал всё по инструкции для рутокена с, зашифрованного по гост 2012: установил криптопро 5, свежие драйвера и плагины, внес изминения в ifc.conf, установил хромиум гост, в итоге проверка работоспособности рутокена в браузере проходит, а вот вход на госуслуги после ввода пинкода не происходит, подскажите как победить эту проблему. система ubuntu 19.04
« Последнее редактирование: 02 Августа 2019, 05:49:46 от burnet03 »

Оффлайн Usermaster

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 2537
    • Просмотр профиля
Всё просто, плагин госуслуг ещё не поддерживает Крипто ПРО 5.
Надо немного подождать или 4 ставить.

Оффлайн burnet03

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
все прекрасно заработало, в госуслуги входит и в мозиле, и в гуглхроме, и в хромиуме. порверил как на стационаре, так и на буке. всем спасибо

 

Страница сгенерирована за 0.03 секунд. Запросов: 23.