Инструкция по настройке и работе с Крипто-Про для государственных порталов

Сообщения
7
#1
Используемые символы

# выполняется от суперпользователя "root" или через "sudo"
$ выполняется от обычного пользователя
\\ комментарий

# apt install alien libpcsclite1 pcscd libccid zip unzip
Загрузить последнюю версию Крипто-Про с официального сайта

Открыть Пуск->Утилиты->Менеджер файлов mc
перейти в каталог куда загрузили архив

Распакуем архив
$ tar -xf linux-amd64_deb.tgz

Перейдем в каталог
$ cd linux-amd64_deb

получим то что на картинке ниже

mc_cprocsp.jpg


# sh install_gui.sh

mc_cprocsp_install_1.jpg

Жмем клавишу Enter

Выбираем все пункты нажимая на клавишу "Пробел" переход осуществляется клавишами вниз/вверх

mc_cprocsp_install_2.jpg

Жмем клавишу Enter

mc_cprocsp_install_3.jpg

Жмем клавишу Enter

mc_cprocsp_install_4.jpg

Жмем клавишу Enter

mc_cprocsp_install_6.jpg


Жмем клавишу Enter

mc_cprocsp_install_7.jpg

Вводим свой серийный номер. Регистр нужно строго соблюдать!!!
Жмем клавишу Enter

mc_cprocsp_install_8.jpg


Жмем выбираем Exit клавишами Tab, жмем клавишу Enter, Выбираем Yes, жмем клавишу Enter
Для USB токенов нужно установить данное ПО
# apt install libpcsclite1 pcscd libccid

они все есть в репозитарии астры, ничего нигде искать дополнительно не надо

Библиотека libccid не ниже 1.4.2

Для rutoken S нужно установить драйвер c сайта производителя, лучше установить более новое
https://www.rutoken.ru/support/download/drivers-for-nix/

# dpkg -i ifd-rutokens_1.0.4_amd64.deb

Проверить USB токены можно командой
$ /opt/cprocsp/bin/amd64/list_pcsc

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

Качаем архив с плагином с официального сайта Крипто-ПРО https://www.cryptopro.ru/products/cades/plugin желательно в отдельный каталог
Заходим в каталог куда скачали архив с плагином и разархивируем

$ tar -xf cades_linux_amd64.tar.gz

Конвертируем в deb пакеты

# alien *.rpm

<вывод команды>
Warning: Skipping conversion of scripts in package cprocsp-pki-cades: postinst prerm
Warning: Use the --scripts parameter to include the scripts.
cprocsp-pki-cades_2.0.0-2_amd64.deb generated
cprocsp-pki-phpcades_2.0.0-2_amd64.deb generated
Warning: Skipping conversion of scripts in package cprocsp-pki-plugin: postinst prerm
Warning: Use the --scripts parameter to include the scripts.
cprocsp-pki-plugin_2.0.0-2_amd64.deb generated
Warning: Skipping conversion of scripts in package lsb-cprocsp-devel: prerm
Warning: Use the --scripts parameter to include the scripts.
lsb-cprocsp-devel_4.0.9921-6_all.deb generated
</вывод команды>

если вывод команды был "bash: alien: команда не найдена", то вам надо читать внимательней потребности, установить alien

# apt install alien

Устанавливаем

# dpkg -i lsb-cprocsp-devel_*.deb cprocsp-pki-*.deb

Выбор ранее не выбранного пакета lsb-cprocsp-devel.
(Чтение базы данных … на данный момент установлено 232442 файла и каталога.)
Подготовка к распаковке lsb-cprocsp-devel_4.0.9921-6_all.deb …
Распаковывается lsb-cprocsp-devel (4.0.9921-6) …
Выбор ранее не выбранного пакета cprocsp-pki-cades.
Подготовка к распаковке cprocsp-pki-cades_2.0.0-2_amd64.deb …
Распаковывается cprocsp-pki-cades (2.0.0-2) …
Выбор ранее не выбранного пакета cprocsp-pki-phpcades.
Подготовка к распаковке cprocsp-pki-phpcades_2.0.0-2_amd64.deb …
Распаковывается cprocsp-pki-phpcades (2.0.0-2) …
Выбор ранее не выбранного пакета cprocsp-pki-plugin.
Подготовка к распаковке cprocsp-pki-plugin_2.0.0-2_amd64.deb …
Распаковывается cprocsp-pki-plugin (2.0.0-2) …
Настраивается пакет lsb-cprocsp-devel (4.0.9921-6) …
Настраивается пакет cprocsp-pki-cades (2.0.0-2) …
Настраивается пакет cprocsp-pki-phpcades (2.0.0-2) …
Настраивается пакет cprocsp-pki-plugin (2.0.0-2) …
Обрабатываются триггеры для libc-bin (2.24-11+deb9u3) …

на всякий пожарный установку лучше повторить, т.к. бывали случаи что установка прошла успешно, а библиотек на месте не было

для firefox

# ln -s /opt/cprocsp/lib/amd64/libnpcades.so /usr/lib/mozilla/plugins/lib/libnpcades.so
# ln -s /opt/cprocsp/lib/amd64/libcppkcs11.so.4.0.4 /usr/lib/mozilla/plugins/lib/libcppkcs11.so


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

# ln -s /opt/cprocsp/lib/amd64/libnpcades.so /usr/lib/libnpcades.so
# ln -s /opt/cprocsp/lib/amd64/libcppcades.so /usr/lib/libcppcades.so
# ln -s /opt/cprocsp/lib/amd64/libcppkcs11.so /usr/lib/libcppkcs11.so


создаем симлинк для корректной работы связи расширения браузера с библиотекой установленного плагина

# ln -s /etc/opt/chrome/native-messaging-hosts/ru.cryptopro.nmcades.json /etc/chromium/native-messaging-hosts/ru.cryptopro.nmcades.json

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

# ln -s /etc/opt/chrome /etc/opt/chromium
# ln -s /etc/opt/chrome /etc/opt/chromium-gost


Установить Расширение
или ссылка текстом https://chrome.google.com/webstore/detail/cryptopro-extension-for-c/iifchhfnnmpdbibifmljnfjhpififfog

Проверить плагин можно
https://www.cryptopro.ru/sites/default/files/products/cades/demopage/simple.html
или
https://www.cryptopro.ru/sites/default/files/products/cades/demopage/cades_bes_sample.html
Одно из самых главных требований при работе с этим плагином, это нужно при КОПИРОВАНИИ или СОЗДАНИИ контейнера установить пинкод

Качаем прикрепленный архив
или с тындекс диска
https://yadi.sk/d/8VJFh_cFHRGRJA

Разархивируем
$ unzip IFCPlugin-3.0.0-x86_64.deb.zip

Устанавливаем
# dpkg -i IFCPlugin-3.0.0-x86_64.deb

создаем симлинк для корректной работы связи расширения браузера с библиотекой установленного плагина

# ln -s /etc/opt/chrome/native-messaging-hosts/ru.rtlabs.ifcplugin.json /etc/chromium/native-messaging-hosts/ru.rtlabs.ifcplugin.json

# mcedit /etc/ifc.cfg

log = {
level = "DEBUG";
}

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

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

{ name = "Криптопровайдер VipNet CSP";
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";
lib_win = "jcPKCS11-2.DLL";
lib_linux = "libjcPKCS11-2.so.2.4.0";
lib_mac = "jcPKCS11-2";
},

{ name = "CryptoPro CSP";
alias = "cryptoprocsp";
type = "pkcs11";
alg = "gost2001";
lib_linux = "libcppkcs11.so";
},

{ name = "CryptoPro CSP";
alias = "cryptoprocsp";
type = "pkcs11";
alg = "gost2012";
lib_linux = "libcppkcs11.so";
},

{ name = "Актив руТокен ЭЦП";
alias = "ruTokenECP";
type = "pkcs11";
alg = "gost2001";
lib_win = "rtpkcs11ecp.dll";
lib_linux = "librtpkcs11ecp.so";
lib_mac = "librtpkcs11ecp.dylib";
}
);
Или
Заходим в каталог куда скачали архив
$ unzip ifc.cfg.zip

Копируем конфигурационный файл

# cp ifc.cfg /etc/ifc.cfg

Установить Расширение для gosuslugi.ru

Перейти в меню - Дополнительные инструменты - Расширения и включить плагин


Можно проверять !!!

На случай диагностики ошибок ifcplugin нужен будет лог /var/log/ifc/engine_logs/engine.log
 

Вложения

Последнее редактирование:
Сообщения
7
#2
Общее описание выводов ошибок
[ErrorCode: 0x00000000]
\\ Код ошибки 0, значит все прошло успешно

Error number 0x8009001f (2148073503).
Неправильный параметр набора ключей.
\\ скорее всего нужно добавить пинкод или другой тип стандарта контейнера если ошибка возникает при копировании ключей
\\ -pinsrc 12345678
\\ -pindest 12345678

ERROR: SCardListReaders(NULL)
если ключ вставлен, то скорее всего либо у вас не установлены требуемые библиотеки/драйвера, либо что то мешает его распознать(какой-то пакет из состава Крипто-Про)
Проверить/отобразить USB токены можно командой
$ /opt/cprocsp/bin/amd64/list_pcsc
Примерный вывод:
Aktiv Co. Rutoken S 00 00

если получили ERROR: SCardListReaders(NULL), если ключ вставлен, то скорее всего либо у вас не установлены требуемые библиотеки/драйвера, либо что то мешает его распознать(какой-то пакет из состава Крипто-Про)
Вывести список всех ключевых носителей и контейнеров
$ /opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifyc -fqcn

<вывод команды>
CSP (Type:80) v4.0.9017 KC2 Release Ver:4.0.9944 OS:Linux CPU:AMD64 FastCode:READY:SSSE3.
AcquireContext: OK. HCRYPTPROV: 28131731
\\.\Aktiv Co. Rutoken S 00 00\key1
OK.
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 1,380 sec
[ErrorCode: 0x00000000]
</вывод команды>


Вывод всех ключевых носителей и контейнеров с отображением уникального имени
$ /opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifyc -fqcn -uniq

<вывод команды>
CSP (Type:80) v4.0.9018 KC2 Release Ver:4.0.9958 OS:Linux CPU:AMD64 FastCode:READY:SSSE3.
AcquireContext: OK. HCRYPTPROV: 16527635
\\.\HDIMAGE\key0 |\\.\HDIMAGE\HDIMAGE\\key0.000\1174
OK.

Total: SYS: 0,000 sec USR: 0,000 sec UTC: 2,130 sec
[ErrorCode: 0x00000000]
</вывод команды>


Нужная нам информация между строками "AcquireContext: OK." и "OK."

Еще возможный вывод \\.\HDIMAGE\ и \\.\FLASH\, где

\\.\HDIMAGE\ это ключевой носитель сохранен на жестком диске, вроде считывателя реестра в Windows версии. "key0" это имя ключевого контейнера на носителе.

\\.\FLASH\
$ /opt/cprocsp/bin/amd64/csptest -keycopy -contsrc '\\.\HDIMAGE\key0' -contdest '\\.\Aktiv Co. Rutoken S 00 00\key1' -typesrc 75 -typedest 75 -pinsrc 12345678 -pindest 12345678

<описание опций>

csptest -keycopy \\ Запуск копирования
-contsrc '\\.\HDIMAGE\key0'

\\ Указываем откуда копируем "\\.\HDIMAGE" это указатель откуда брать ключ в данном случае из локального расположения,

навроде считывателя реестра в Windows версии. "key0" это имя ключевого контейнера на носителе

-contdest '\\.\Aktiv Co. Rutoken S 00 00\key1'

\\ Указываем куда копируем '\\.\Aktiv Co. Rutoken S 00 00\key1' это указатель на устройство

ОБЯЗАТЕЛЬНО !!! Имя ключей должно отличаться
ОБЯЗАТЕЛЬНО !!! Имя ключей должно быть на латинице,
КАТЕГОРИЧЕСКИ не рекомендуется использовать кириллицу или любой другой алфавит отличный от латиницы


-typesrc 75 \\ Тип сформированного контейнера откуда копируется по ГОСТУ где 75(ГОСТ-2001), 80(ГОСТ-2012)

-typedest 75 \\ Тип сформированного контейнера куда копируется
-pinsrc 12345678 \\ Пинкод источника ключевого носителя
-pindest 12345678 \\ Пинкод ключевого носителя

</описание опций>

<вывод команды>



</вывод команды>
Копирование контейнера с ключами по уникальным именам на случай если имя контейнера содержит кириллицу или какие нибудь непонятные символы
$ /opt/cprocsp/bin/amd64/csptest -keycopy -contsrc 'HDIMAGE\\key0.000\1174' -contdest '\\.\Aktiv Co. Rutoken S 00 00\key1' -typesrc 75 -typedest 75
Удаление контейнера с ключами по уникальному имени
$ /opt/cprocsp/bin/amd64/csptest -keyset -delete -cont 'HDIMAGE\\key0.000\1174'
*** Импорт корневого доверенного сертификата
$ /opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file ROOT.cer
Вместо ROOT.cer подставить свой корневой серитикат который вы хотите загрузить
*** Загрузка личного сертификата в хранилище в данном случае из локального считывателя
$ /opt/cprocsp/bin/amd64/csptestf -absorb -cert -pattern 'HDIMAGE'

*** Загрузка личного сертификата в хранилище в данном случае из рутокена
$ /opt/cprocsp/bin/amd64/csptestf -absorb -cert -pattern 'rutoken'

*** Загрузка личного сертификата в хранилище в данном случае из Флэш накопителя
$ /opt/cprocsp/bin/amd64/csptestf -absorb -cert -pattern 'FLASH'
*** Вывод личных сертификатов в личном хранилище
$ /opt/cprocsp/bin/amd64/certmgr -list -cert -store uMy

*** Вывод субъекта и серийного номера загруженных личных сертификатов в личном хранилище
$ /opt/cprocsp/bin/amd64/certmgr -list -cert -store uMy | grep -iE "^Serial|^Subject"

*** Полный вывод загруженных сертификатов корневых удостоверяющих центров в личном хранилище
$/opt/cprocsp/bin/amd64/certmgr -list -cert -store uroot

*** Вывод субъекта и серийного номера загруженных сертификатов корневых удостоверяющих центров в личном хранилище
$ /opt/cprocsp/bin/amd64/certmgr -list -cert -store root | grep -iE "^Serial|^Subject"

*** Полный вывод загруженных сертификатов промежуточных серверов в личном хранилище
$ /opt/cprocsp/bin/amd64/certmgr -list -cert -store uca

*** Вывод субъекта и серийного номера загруженных сертификатов промежуточных серверов в личном хранилище
$ /opt/cprocsp/bin/amd64/certmgr -list -cert -store uca | grep -iE "^Serial|^Subject"
*** Загрузка личного сертификата в личное хранилище сертификатов, в данном случае из всех считывателей rutoken
/opt/cprocsp/bin/amd64/csptestf -absorb -cert -pattern 'rutoken'

<вывод команды>
Match: SCARD\rutoken_32b56458\0B00\7E72
OK.
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 1,760 sec
[ErrorCode: 0x00000000]
</вывод команды>


<описание вывода>
Match: SCARD\rutoken_32b56458\0B00\7E72
\\Match это означает что он нашел ключевые носители удовлетворяющие условию и загрузил с него все сертификаты
\\Skip это значит что этот считыватель и контейнер не соответствует запросу и будет проигнорирован
</описание вывода>
/opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file 48b19fb33bb637c88a54d19650730b67e42db121.cer

файл сертификата прикреплен
*** Экспорт в файл сертификата из хранилища
$ /opt/cprocsp/bin/amd64/certmgr -export -cert -dn "CN=" -dest 'cert.crt'
Сначала выведет список всех имеющихся личных сертификатов, затем нужно ввести порядковый номер сертификата

--- Эспорт в файл закрытого ключа из хранилища
/opt/cprocsp/bin/amd64/certmgr -export -file 1234.pfx
Сначала выведет список всех имеющихся личных сертификатов, затем нужно ввести порядковый номер сертификата
 

Вложения

Последнее редактирование:

Blaze

New member
Сообщения
43
#3
Вопросы по госуслугам.
1) Возможен-ли вход в Личный кабинет Госуслуг, если личный сертификат установлен в хранилище -store uMy с привязкой к контейнеру закрытого ключа, в локальном ридере HDIMAGE?
2) Или вход возможен только по rutoken с установленным пин кодом.
3) Для чего в /etc/ifc.cfg секция
Bash:
config = {
    cert_from_registry = "false";
    set_user_pin = "false";
}
и за что отвечают эти параметры?

P.S. С госзакупками проблем со входом не возникло. Спасибо.
 
Последнее редактирование:
Сообщения
7
#4
Вопросы по госуслугам.
1) Возможен-ли вход в Личный кабинет Госуслуг, если личный сертификат установлен в хранилище -store uMy с привязкой к контейнеру закрытого ключа, в локальном ридере HDIMAGE?
2) Или вход возможен только по rutoken с установленным пин кодом.
3) Для чего в /etc/ifc.cfg секция
Bash:
config = {
    cert_from_registry = "false";
    set_user_pin = "false";
}
и за что отвечают эти параметры?

P.S. С госзакупками проблем со входом не возникло. Спасибо.

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

лучше оставить так как работает, любы изобретения могут привести к сбоям в работе
 

Blaze

New member
Сообщения
43
#5
Использую Porteus 4.0 x86_64 + КриптоПро CSP 5.0.11233 (Domovoy) KC1 от 18.09.2018 + IFCPlugin-3.0.3.0-x86_64 + pcsc-lite-1.8.24-x86_64-1cf
В /etc/ifc.cfg добавил:
Bash:
  { name = "CryptoPro CSP";
    alias = "cryptoprocsp";
    type = "pkcs11";
        alg = "gost2001";
    lib_linux = "libcppkcs11.so";
  },

  { name = "CryptoPro CSP";
    alias = "cryptoprocsp";
    type = "pkcs11";
        alg = "gost2012";
    lib_linux = "libcppkcs11.so";
  },
личный сертификат установлен в хранилище -store uMy с привязкой к контейнеру закрытого ключа, в локальном ридере HDIMAGE

В Astra Linux применяется какая версия пакета pcsc-lite ?

У меня вечно, пока не закроешь страницу, висит на обращении к средству электронной подписи и бесконечно бегает анимация

При этом /var/log/ifc/engine_logs/engine.log пустой.
 
Сообщения
7
#6
У вас плагин версии 3.0.3 он не работает, нужен 3.0.0, проверено на многих дистрибутивах

pcsc-1.8.20, но это существенной роли не сыграет главное это версия плагина.