Ошибка загрузки динамической библиотеки 1с криптопро

Обновлено: 03.07.2024

Загрузить последнюю версию Крипто-Про с официального сайта

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

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

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

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

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

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

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

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

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

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

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

Жмем выбираем Exit клавишами Tab, жмем клавишу Enter, Выбираем Yes, жмем клавишу Enter

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

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

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

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

$ tar -xf cades_linux_amd64.tar.gz

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

<вывод команды>
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

Выбор ранее не выбранного пакета 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) …

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

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

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

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

Одно из самых главных требований при работе с этим плагином, это нужно при КОПИРОВАНИИ или СОЗДАНИИ контейнера установить пинкод

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

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

config = cert_from_registry = "false";
set_user_pin = "false";
>

< 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";
>,

Заходим в каталог куда скачали архив
$ unzip ifc.cfg.zip

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

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


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

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

Вложения

DavidovichDV

New member

Общее описание выводов ошибок
[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" это имя ключевого контейнера на носителе.

$ /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

*** Загрузка личного сертификата в личное хранилище сертификатов, в данном случае из всех считывателей 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
Вопросы по госуслугам.
1) Возможен-ли вход в Личный кабинет Госуслуг, если личный сертификат установлен в хранилище -store uMy с привязкой к контейнеру закрытого ключа, в локальном ридере HDIMAGE?
2) Или вход возможен только по rutoken с установленным пин кодом.
3) Для чего в /etc/ifc.cfg секция

и за что отвечают эти параметры?

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

DavidovichDV

New member
Вопросы по госуслугам.
1) Возможен-ли вход в Личный кабинет Госуслуг, если личный сертификат установлен в хранилище -store uMy с привязкой к контейнеру закрытого ключа, в локальном ридере HDIMAGE?
2) Или вход возможен только по rutoken с установленным пин кодом.
3) Для чего в /etc/ifc.cfg секция

и за что отвечают эти параметры?

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

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

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

Blaze

New member
Использую 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 добавил:

личный сертификат установлен в хранилище -store uMy с привязкой к контейнеру закрытого ключа, в локальном ридере HDIMAGE

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

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


DavidovichDV

New member

У вас плагин версии 3.0.3 он не работает, нужен 3.0.0, проверено на многих дистрибутивах

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

amotash

New member
Здравствуйте.
С плагином 3.0.3 не появлялось окно с выбором сертификата.
Установил плагин 3.0.0 окно выбора сертификата появилось. (обрадовался )
После выборы нужно сертификата и ввода пароля окно закрывается, вход в личный кабинет не происходит.

Вложения

Screenshot_20181207_165112.jpg

Screenshot_20181207_165145.jpg

Screenshot_20181207_165202.jpg

DavidovichDV

New member
Здравствуйте.
С плагином 3.0.3 не появлялось окно с выбором сертификата.
Установил плагин 3.0.0 окно выбора сертификата появилось. (обрадовался )
После выборы нужно сертификата и ввода пароля окно закрывается, вход в личный кабинет не происходит. нужен хотя бы скриншот того что у вас происходит, желательно скриншоты под спойлеры

amotash

New member
нужен хотя бы скриншот того что у вас происходит, желательно скриншоты под спойлеры

DavidovichDV

New member

amotash

New member
Пинкод на контейнере стоит.
Вводил правильный, неправильный, оставлял пустым - результат один и тот же. Скидывает на страницу входа.

Вложения

Screenshot_20181207_165202.jpg

mfc31

New member

DavidovichDV

New member
Пинкод на контейнере стоит.
Вводил правильный, неправильный, оставлял пустым - результат один и тот же. Скидывает на страницу входа. есть подозрение что виноват Yandex-browser, проверьте пожалуйста на интегрированном chromium или chromium-gost

renbuar

New member

По данной инструкции зашел на площадки и госуслуги. Спасибо.

renbuar

New member
Andrey, [05.10.18 11:28]
[В ответ на Дмитрий Давидович]
У них кривой сертификат сервера.
Диагностировать можно так:
[root@test-x64-centos7

Andrey, [05.10.18 11:35]
Но мы сделали параметр для отключения требований RFC6125, который может подвергнуть систему опасности для атак с подменой сертификатов:
[root@test-x64-centos7

  • Для работы с носителями Рутокен нужно поставить Драйверы Рутокен (для Windows ) или пакет с соответствующей библиотекой ;
  • Для работы с носителями JaCarta нужно поставить Единый КлиентJaCarta ;
  • Для работы с носителями ESMART нужно поставить ESMART PKI Client или пакет с соответствующей библиотекой .

Как CSP 5.0 11455 работает с неизвлекаемыми ключами

Первая сертифицированная версия КриптоПро CSP 5.0 умеет работать с неизвлекаемыми ключами на всех поддерживаемых токенах (прежде всего, Рутокен ЭЦП 2.0, JaCarta -2 ГОСТ и ESMART Token ГОСТ) напрямую. Производители токенов разработали специальные библиотеки (модули поддержки), которые оптимально формировали последовательности команд для выполнения операций.

У такого подхода есть плюсы:

  • Высокая производительность операций: криптопровайдер поддерживает точное состояние носителя с точностью до открытых папок и файлов, что позволяет минимизировать избыточные операции;
  • Удобство расширения интерфейса: криптопровайдер добавляет поддержку новой функции или протокола, разработчики токенов реализуют функции в модуле поддержки, пользователи получают работающее протестированное решение;
  • Кроссплатформенность и простота использования: всё, что нужно пользователю - пакет с модулем поддержки из состава криптопровайдера. Модули собираются, как правило, под тот же набор систем, что и базовые библиотеки CSP.

Несмотря на значительный набор достоинств у данного подхода есть и ряд недостатков:

  • Производитель, который хочет добавить поддержку своего устройства в КриптоПро CSP, должен подробно изучить интерфейс встраивания модулей поддержки (READER) и написать довольно большой модуль - во многих случаях это доcтаточно сложная задача, требующая существенных временных затрат;
  • Так как интерфейс READER оперирует файловыми операциями, создаваемые для него объекты крайне сложно отобразить на другие интерфейсы. Это приводит к тому, что пользователь мог создать неизвлекаемый ключ штатными средствами носителя, но через КриптоПроCSP 5.0 этот ключ не будет виден, так как ему не хватает каких-то служебных файлов;
  • Дороговизна поддержки. КриптоПро CSP включает в свой состав около двух десятков модулей поддержки, многих из которых используются для десятков носителей в разных режимах. Учитывая, что их код является продуктом совместной разработки КриптоПро и производителей ключевых носителей, кодовая база, на которой они основаны, является крайне гетерогенной. Любое улучшение или исправление ошибки в CSP, связанной с ключевыми носителями, добавляет несколько недель тестирования и анализа кода, что сдвигает релиз сборки для пользователей.

Что изменилось в CSP 5.0 R2 12000

rutoken_old

  • На Unix поддержка возвращается так: cpconfig -ini '\config\parameters' -add long EnableNativeTokenCryptMode 1

JaCarta и ESMART

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

registration

Создание ключей и имя считывателя

keygen_reader


Winlogon, Распространение сертификата и RDP

К сожалению, изменение имени считывателя (добавление нового) сказалось на поддержке стандартных системных служб криптографии Windows .

instal_cert

diff_readers

Обратите внимание, что на данной вкладке обязательно указывать путь только до 64-разрядной библиотеки. Если она будет находиться в стандартной системной директории System32, то 32-разрядная библиотека будет автоматически загружаться из директории SysWOW64.

Если же вы тестируете библиотеки, не установленные в системный стандартный путь, рекомендуем прописать путь до обеих библиотек.

Несколько важных замечаний, на которые нужно обратить внимание:

Здравствуй Гиктаймс, сегодня мы поговорим о некоторых, а по сути — одной большой, проблемах сдачи электронной отчетности в системе GNU/Linux.

image

Вопрос сдачи электронной отчетности из ОС Linux давно обсуждался как на Хабре/Гиктаймс, так и на тематических форумах — Мисте, Убунту, ЛОРе, КриптоПро и форуме техподдержки 1С: ИТС. В двух словах на настоящий момент есть два решения — либо использовать облачную КЭП и сдавать отчетность через обозреватель, либо использовать выделенную/виртуальную машину с установленной ОС Windows (пусть даже пробной версией) для сдачи отчетности. Вариант сдачи отчетности с помощью специализированных утилит предоставляемых органами (ФНС, ПФР, ФСС, Росстат, ФСРАР) возможен только при использовании Wine@Etersoft, что фактически тоже костыль (ибо нам потребуется ДВЕ лицензии на СКЗИ КриптоПро — для Windows и Linux).

Не секрет что для ОС GNU/Linux существует не так уж и много программ, для ведения бухгалтерии: Ананас (который ныне покоится с миром), украинский Дебет+ (у которого модуль поддержки Российского законодательства не обновлялся уже, Ктулу знает сколько) и 1С бухгалтерия. Имеются в виду Нативные приложения. Из всех вышеперечисленных только 1С на момент написания статьи входит в государственный реестр отечественного ПО и содержит механизмы подготовки и сдачи отчетности в электронном виде через спец-операторов электронного документооборота. К слову операторов, поддерживаемых 1С бухгалтерией не много: ЗАО "Калуга-Астрал" (разработчик подсистемы 1С-Отчетность), ООО "Такском", ООО НПФ "Форус" и мифический "Прочий оператор документооборота".
К сожалению сдача отчетности из 1С сопряжена с рядом трудностей, с которыми может столкнуться рядовой (да и опытный) системный администратор. Разумеется мы подробно рассмотрим эти проблемы и способы их решения.

Первая проблема с которой мы сталкиваемся — это СКЗИ. Нет, не их отсутствие, они есть. Для Linux есть несколько сертифицированных СКЗИ (с поддержкой ГОСТ) доступных к установке и используемых в разных подсистемах. На момент написания статьи это следующие СКЗИ, поправьте меня, если я что-то упустил:

CryptoCom
Данная СКЗИ доступна для платформ i686 и amd64, используется в основном в системах интернет-банкинга, в частности системой iBank (используется многими банками, такими как ГазпромБанк, УБРИР, Альфа и д.р.).

CryptoPro CSP
Фактически единственное на настоящий момент комплексное решение для Linux для работы с электронной подписью и шифрованием. Доступна для платформ i686, amd64, armhf (включая android), PowerPC. Это не говоря уже о том что у них есть версии для Solaris (i686, amd64, sparc), AIX, FreeBSD, OSX и iOS. Как ни странно (сарказм), именно КриптоПро официально рекомендуется многими органами государственной власти для взаимодействия и электронного документооборота. Лицензии на КриптоПро часто идут в составе ключа ЭЦП, и в составе договора комплексного обслуживания для сдачи отчетности. Мой выбор был однозначным в пользу этого СКЗИ. К минусам можно отнести относительную сложность установки на системах отличных от RHEL/SLES и встречающиеся недочеты в сборке пакетов ПО (не разрешенные импортируемые символы и экспортируемые функции с разорванными зависимостями). В большинстве случаев эти недочеты не видны пользователю, т.к. данные функции предназначены для работы различных библиотек в составе КриптоПро и автоматически разрешаются при их первом вызове ядром ОС (в адресном пространстве приложения уже загружены нужные библиотеки). Второй минус — отсутствие почтового клиента, если обозреватель CryptoFox представлен, но от поддержки Thunderbird в КриптоПро отказались. Нужно отдать должное, что с их стороны предпринимались активные попытки внести изменения в рабочую версию NSS с целью поддержки ГОСТ, но воз и ныне там. Если бы изменения были приняты, поддержка ГОСТ появилась бы во всех обозревателях и приложениях использующих NSS, таких как Open/LibreOffice, продуктах Mozilla, Nautilus/Nemo, Thunar, XCA и других программах.

По понятным причинам был выбран СКЗИ КриптоПро, и давайте остановимся на нем подробнее.

Во-первых, для платформы Linux отсутствует знакомое многим приложение КриптоАРМ, для подписи документов. Впрочем для создания прикрепленной и открепленной подписи можно воспользоваться утилитами командной строки. Для создания и проверки открепленной цифровой подписи мной были созданы два сценария — sign и verify, соответственно. Текст сценариев приведен ниже, согласен что они несколько костыльные, но писалось на скорую руку, а на тот момент бета-версия CryptoPro 4.0 ведя себя странно, при прямой передаче путей к подписываемым, и выходным файлам.

Во-вторых, и это очень важно, мы имеем следующую картину. в 1С бухгалтерии штатные настройки работы с СКЗИ КриптоПро приведены для версии 3.6. С версией 3.6 работает старая версия CryptoFox. На этом достоинства заканчиваются и начинается головная боль. Старая версия CryptoFox не отображает ни один современный сайт, даже портал налоговой инспекции куда-то уползает. При попытке установить

С версией 3.9 ситуация ещё веселее — 1С её уже не видит, но CryptoFox ещё падает, при чем как старый, так и новый.

Версия 4.0, напротив — не видится 1С, но зато с ней заводится CryptoPro Browser Plugin 2.0, работает вход на госплощадки из CryptoFox (о них разговор отдельный, и если разбирать работу из ОС GNU/Linux с ними — материала хватит на ещё одну статью). Проблема — заставить увидеть 1Ску установленный СКЗИ. Проблема в общем то не такая уж и серьёзная, решается буквально за пятнадцать секунд, но на поиск самого решения ушла целая неделя общения с техподдержкой КриптоПро (и отпинывания меня поддержкой 1С на инструкцию в ИТС). В итоге проблема была решена самостоятельно, и решение в конечном итоге опубликовано на форуме КриптоПро. Методология решения проблемы на будущее:

В 1С бухгалтерии имеется возможность добавить произвольный криптопровайдер. Воспользуемся этим механизмом, добавьте нового криптопровайдера, и назовите его, скажем "КриптоПро CSP 4.0".

  • Указываем следующие данные:
    Имя программыCrypto-Pro GOST R 34.10-2001 KC1 CSP
    Тип программы75
    Алгоритм подписиGOST R 34.10-2001
    Алгоритм хешированияGOST R 34.11-94
    Алгоритм шифрованияGOST 28147-89
  • Сохраняем криптопровайдер и указываем путь к библиотеке: /opt/cprocsp/lib/amd64/libcapi20.so

Готово, 1С теперь видит установленный криптопровайдер. Казалось бы — всё, можно проступать к добавлению сертификатов и настройке сдачи отчётности, но не тут то было. Маленькая беленькая сибирская лисичка подкралась к нам откуда мы и не ждали — от самих разработчиков 1С. Так исторически сложилось, что подсистему электронного документооборота, 1С-Отчетность, ядро 1С и конфигурации пишут разные люди, и даже разные компании. При создании конфигураций с функцией 1С-Отчетность для 1С 8.3, например "Бухгалтерия предприятия 3.0", разработчики не долго думая перенесли всю подсистему ЭДКО "как есть", без изменений, в результате чего мы получаем парадокс. Сама 1С бухгалтерия видит СКЗИ, видит сертификаты, позволяет их установить, подписать и зашифровать любые документы, но при этом система электронного документооборота (старая версия) в упор не видит ни одного установленного сертификата, и соответственно не может даже получить начальную конфигурацию от оператора документооборота — её попросту нечем расшифровывать. Вернее чем расшифровывать есть, но подсистема ЭДКО использует свой собственный механизм работы с СКЗИ, задействуя внешнюю компоненту (только для Windows) и ничего не знает о существовании встроенных механизмов работы с СКЗИ, которые использует сама 1С в рамках конфигурации.

Тем не менее, подсистема ЭДО (не путать с ЭДКО) с контрагентами видит все актуальные сертификаты и позволяет подключиться к системе электронного документооборота. Но не сдачи отчетности.
Для Linux действует ограничение на прямую работу конфигурации Клиент-ЭДО, с внешней конфигурационной базой, и для этого нужен работающий сервер 1С. Так как базовые версии конфигураций не позволяют использовать клиент-серверный вариант развертывания 1С, интеграция Клиент-ЭДО и бухгалтерии в Linux для таких конфигураций не возможна, будет работать только для полнофункциональных. В большинстве конфигураций можно включить обмен с контрагентами, и он будет работать, несмотря на не работающую 1С-Отчетность.

Если мы откроем конфигуратор и включим режим отладки, мы увидим следующую картину:
Формы 1С-Отчетности используют Общие->ОбщиеМодули->КриптографияЭДКОКлиент, который в свою очередь опирается на работу внешней компоненты Addin.ЭДОNative.CryptS.
Тот же функционал работы с электронной цифровой подписью и шифрованием (без функционала обмена транспортными контейнерами по электронным каналам связи) реализован в Общие->ОбщиеМодули->ЭлектроннаяПодписьКлиент, которая учитывает работу в ОС семейства Linux и корректно загружает как и внешнюю компоненту работы с XMLDSig, так и модуль криптопровайдера. Данная библиотека корректно видит все сертификаты, позволяет осуществлять подпись и шифрование документов, содержит функции для работы как с объектами в памяти так и с файлами на жестком диске. Данная библиотека используется во всех стандартных механизмах работы с ЭЦП внутри 1С, кроме подсистемы 1С-Отчетности (ЭДКО).

То есть для реализации работы подсистемы 1С ЭДКО достаточно переписать либо формы 1С-Отчетности на использование встроенных механизмов, либо перегрузить КриптографияЭДКОКлиент, для использования не внешней компоненты, а переадресовывать вызовы работы с сертификатами, ЭЦП и шифрованием на встроенный клиент работы с СКЗИ.
Общение с техподдержкой 1С дало лишь ответ что они в курсе данной проблемы, но клиентов использующих ОС GNU/Linux слишком мало (потребность не носит массовый характер), но задача у них "записана".

UPD:
Таки удалось завести работу мастера после детального изучения исходников. Пока застрял на расшифровке контейнера от Такском, но сертификаты уже видятся. Работает только на свежей версии КриптоПро 4. Завести как указано ниже. Наименование представления роли не играет, но "внутри" 1С-ЭДКО именно так:


Представление CryptoPro CSP
Имя программы Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider
Тип программы 75
Алгоритм подписи GOST R 34.10-2001
Алгоритм хеширования GOST R 34.11-94
Алгоритм шифрования GOST 28147-89

Обязательными при проверке являются поля Имя программы и Тип программы. Имя программы относится к режиму совместимости с версией криптопровайдера 2.0, в бета версии 4.0 наименование отсутствовало.

Основная проблема скрыта тут: Общие->Общие модули->КриптографияЭДКОСлужебныйКлиент.ПолучитьКриптопровайдеры

Для Linux убрать единичку. Или добавить проверку для версии КриптоПро 3.9 и выше:
Общие->Общие модули->КриптографияЭДКОКлиентСервер.ПолучитьКриптопровайдеры.КриптопровайдерCryptoPro
Имя: Crypto-Pro GOST R 34.10-2001 KC1 CSP
для клиента, или
Имя: Crypto-Pro GOST R 34.10-2001 KC2 CSP
для сервера.

image

Для приготовления отчетности нам понадобится:

  1. Конфигурация: 1С Бухгалтерия предприятия 3.0 Проф
  2. Технологическая платформа: 1С Бухгалтерия 8.3.11 или выше
  3. Криптопровайдер: КриптоПро 4.0.9929 или выше
  4. Операционная система: GNU\Linux (Mint, Ubuntu, Fedora, RHEL или SUSE), по вкусу
  5. Оператор документооборота: ООО «Такском» или ЗАО «Калуга-Астрал»
  6. Воля для войны с ИТС и технической поддержкой оператора документооборота

Часть первая: Готовим коржи сервер.

Итак, если у Вас ещё нет своего кластера 1С, то самое время его поднять. Если есть — можно приступать к следующему шагу. Я не буду детально разбирать базовые вещи, они и без меня хорошо освещены на портале ИТС и других технических ресурсах, посвященных 1С бухгалтерии. Вместо этого я акцентирую внимание на мелочах, на которые следует обратить внимание и о которых обычно забывают.

Определяемся с лицензиями

В 1С есть два типа лицензий — на сервер и на клиент. Лицензии на сервер позволяют работать в режиме клиент-сервера, а именно это нам и нужно для работы 1С-Отчетности в Linux. Лицензии на клиент позволяют запустить клиентское программное обеспечение (толстый, тонкий, веб) и регламентируют одно подключение к базе (программные) или много подключений с одного устройства (аппаратные).

Если у вас нет лицензии на сервер, то теоретически должен работать тонкий клиент при подключении к файловой базе через Apache — но данная конфигурация не проверялась.
Если у вас только одна информационная база — то выгоднее использовать программные клиентские лицензии. При количестве баз больше двух, например Торговля, Зарплата и Бухгалтерия — выгоднее аппаратная лицензия. Конечно, при условии, что все пользователи работают в нескольких базах одновременно.

Если у вас с каждой базой работает не более 5и человек одновременно, то можно с чистой совестью брать лицензию на Сервер-Мини на 5 подключений. Она и стоит не дорого, и держит 5+1 (клиент+конфигуратор) подключений (сеансов) до каждой информационной базы, для 32х и 64х битного варианта сервера.

Если у вас клиентская лицензия программная, и она одна (например в случае с электронной поставкой), то имейте в виду, что программная лицензия в клиент-серверном варианте расходуется на каждое подключение к базе. То есть запустить конфигуратор и клиент одновременно по сети уже не получится. Единственный выход, например, для отладки кода — подключаться к серверу через SSH+X11 Forwarding и запускать конфигуратор с клиентом уже "локально".

Ещё момент, и он очень важен: Аппаратная лицензия расходуется на каждого клиента (IP адрес) а программная — на подключение (сеанс) пользователя. Количество программных лицензий равно максимальному количеству подключений. Программная лицензия при этом привязана к оборудованию, и очень жестко, по этому общая рекомендация — выносить сервер лицензирования как отдельную виртуальную машину с 2ГБ (двумя Гибибайтами) оперативной памяти и виртуальным дисковым контроллером SATA или IDE, обязательно указав серийные номера дисков. Сам сервер лицензирования не требует серверной лицензии.

В качестве платформы виртуализации подойдет KVM (qemu), Citrix (Xen) или VMWare (V-Sphere, ESXi), использовать VirtualBox или Hyper-V не рекомендую.

Выбираем архитектуру

С лицензиями определились, теперь выделяем одну (аппаратные лицензии) или две (программные лицензии) виртуальные машины под кластер 1С. Характеристики машин примерно такие:

  • Сервер лицензирования — 2ГБ памяти, и 15ГБ на жестком диске.
  • Сервер 1С бухгалтерии — 14-16ГБ памяти, 15ГБ на жестком диске. Если сервер совмещает в себе функции СУБД — то ещё порядка 30-300ГБ на жестком диске.
  • Сервер баз данных — в зависимости от типа сервера (PostgreSQL или Oracle, MS SQL 2017 пока не поддерживается) 4-16ГБ памяти, и 30-300 ГБ на жестком диске под хранение информационных баз. Опять же объём может быть и больше, зависит от того что и как вы храните.

PostgreSQL можно держать на той же машине что и саму 1С.

Обратите внимание, что виртуальные диски лучше держать на шине SATA или SCSI (виртуальная машина с поддержкой UEFI загрузки, например ovmf), и физически осуществлять хранение на lvm томе или iSCSI/FiberChannel/SAS LUN´e. Это позволит Вам в любой момент увеличить объем диска под нужды операционной системы или базы данных.

Если вы используете KVM, то укажите шину IDE для сервера лицензирования и VirtIO-SCSI для кластера 1С/СУБД.

После подготовки машин устанавливаем туда любимый дистрибутив (для начинающих я рекомендую Ubuntu Server 16.04 LTS), СУБД (например PostgreSQL), серверную часть платформы 1С предприятия на сервера лицензирования и кластер 1С. При желании можно дополнить конфигурацию веб-сервером Apache2.4 на кластере серверов 1С-предприятия (я использую его совместно с nginx для аутентификации снаружи по сертификатам, но это лирика).

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

Для установки кластера на сервере лицензирования и будущем кластере 1С нужно распаковать архив серверной части 1С. Раньше её можно было скачать с помощью обозревателя elinks, но сейчас такой способ больше не работает (говорит что файл не найден).

P.S. Если кто нибудь знает способ скачать дистрибутив 1С не прибегая к корпоративному репозиторию, непосредственно из командной строки сервера, напишите в комментариях.
Далее все примеры будут приводиться для дистрибутива Ubuntu Server 16.04 LTS и командной оболочки bash. Для RHEL-based дистрибутивов замените dpkg на rpm.

Устанавливаем 1С на сервере лицензирования и на кластере серверов, если вам не нужен веб сервер:

Устанавливаем 1С на кластере серверов, если вам нужен веб-сервер:

Активируем запуск кластера серверов и запускаем его:

Теперь можно настроить кластер серверов 1С предприятия. Сделать это можно с командной строки или из графической оснастки MMC на платформе Windows. В будущем я возможно сделаю свою оболочку над консольной утилитой, но пока хватает и этого.

Запускаем клиент-серверный менеджер управления кластером для управления с командной строки:

Получаем информацию по кластеру:

Параметр localhost:1545 можно опустить если вы планируете управлять только локальным кластером. При необходимости можно управлять любым кластером, бал бы нужный логин и пароль администратора кластера серверов 1С предприятия. Далее предполагаем что команды выполняются локально на каждом из серверов, например по SSH. Тем не менее никто не запрещает нам управлять обоими серверами с одной консоли.

Самое главное в выхлопе команды для нас — GUID нашего кластера, копируем его, в буфер обмена или сохраняем его в сессионную переменную вот так (на обоих серверах — лицензирования и основном сервере 1С):

На сервере лицензирования удаляем кластер серверов:

На основном сервере 1С добавляем новый сервер в кластер:

Получаем идентификатор нашего сервера:

Удаляем все требования назначения роли:

Добавляем роль сервера лицензирования:

После настройки кластера серверов и переноса сервера лицензирования на отдельный узел (возможно придется прописать их в файле hosts, если у Вас нет собственного DNS сервера) мы можем приступить к следующей части.

Часть вторая: Готовим начинку клиент

Установка клиентской части в чем то тривиальна — устанавливаем общие компоненты из состава сервера и толстый клиент (для рабочих мест можно только тонкий). В качестве клиентской системы я рекомендую что-нибудь простое и удобное для простого пользователя, все таки работать в системе будет либо руководство, либо бухгалтер, возможно ещё кассиры и иной персонал. В моем случае выбор падает на Linux Mint, вы можете выбрать и другой дистрибутив, например Rosa или Astra Linux, в силу религиозных государственных предпочтений. Нужно отметить что на текущий момент 1С не очень хорошо дружит с Gnome 3.0 и его производными, в частности на момент написания статьи 1С 8.3.11 при запуске роняла Cinnamon, поэтому лучшим выбором будет Xfce, KDE или Mate среда окружения. Для руководства, привыкших к Mac подойдет связка Mate+CairoDock.

На настоящий момент 1С-Отчетность работает только с СКЗИ КриптоПро (захардкожено в 1С), тем не менее ЭДО можно использовать с тем же VipNet или другим CADES совместимым СКЗИ.

Толстый и тонкий клиент:

Только тонкий клиент:

Устанавливаем КриптоПро 4.0:

Проверяем и устанавливаем лицензию на КриптоПро (можно остаться на пробной версии и попробовать продукт перед приобретением, или если у вас лицензия на КриптоПро в составе сертификата — ничего не делать):

Теперь подключаем к рабочей станции USB токен, смарт-карту, флешку с контейнером КриптоПро, производим вывод перечня контейнеров и импортируем сертификаты. При импорте с рутокена могут быть проблемы с кодировкой в наименовании контейнера, в этом случае можно воспользоваться inline вызовом iconv для преобразования кодировки, там cp1251.

На выходе должны получить список контейнеров вида:
\.\Aktiv Rutoken lite 00 00\blahblahblah
\.\Aktiv Rutoken ECP\blahblahblah
\.\HDIMAGE\mycont
Если получили крякозяблики в имени контейнера пробуем вывести сведения вот так:

В случае если контейнер создан в ОС Windows и имеет в имени кириллицу, импорт конкретного контейнера будет чуть чуть усложнен, но не невозможен.

Или в случае cp1251

Далее нам нужно получить сертификат головного УЦ выдавшего Ваш сертификат. Для этого нам нужно вывести список сертификатов установленных в хранилище личных сертификатов пользователя:

Нам нужно значение поля “CA cert URL”, автоматически скачать сертификаты удостоверяющих центров можно так:

Если нам требуется поддержка ЭЦП BrowserPlugin, он ставится в два этапа — плагин для Linux + плагин для Firefox/Chrome обозревателя.

Проверяем работу криптопровайдера через портал КриптоПро (веб) или из командной строки. Если через веб у вас не увиделся сертификат, значит машина не может проверить подлинность сертификата головного УЦ выпустившего сертификат, либо сертификат не прошел проверку подлинности. Возможно потребуется скачать и вручную установить CRL, например если доступ в интернет с машины ограничен или на шаге ранее вы не установили клиент curl.

Для проверки с командной строки с проверкой всей цепочки УЦ, воспользуемся следующими командами:

Теперь, когда программное обеспечение на клиенте установлено, приступаем к завершающему этапу — настройке самой отчетности.

Часть третья: Покрываем глазурью

Завершающий этап самый важный. На этой стадии мы уже имеем установленный и настроенный кластер серверов 1С предприятия, и клиентскую машину с тонким и толстым клиентами 1С. Толстый клиент нам понадобится для первоначального развертывания ИБ, активации лицензий и обновления конфигурации ИБ (режим конфигуратора) в остальных случаях нам хватит тонкого клиента. Сама 1С-Отчетность работает только в тонком клиенте.

P.S. Может быть сотрудники 1С или Калуги-Астрал пояснят такое поведение системы при работе с внешней компонентой взаимодействия с СКЗИ.

Настраиваем подключение к базе:

Запускаем клиент 1С и добавляем новое подключение к информационной базе. Если база данных на кластере серверов ещё не существует, создаем её из толстого клиента, можно пустую с последующим импортом дампа средствами конфигуратора (dt,cf файл) или СУБД. В принципе здесь все как обычно, указываем наименование головного узла кластера серверов, имя информационной базы и выбираем преимущественный тип запуска “Тонкий клиент”.

Настраиваем СКЗИ в 1С:

Все настройки приводятся для интерфейса “Такси”, если вы используете классический интерфейс 1С-Предприятия — выбирайте соответствующие пункты главного меню программы.

Открываем “Администрирование” -> “Настройки программы”: “Обмен электронными документами”.


Из открывшейся вкладки выбираем “Электронная подпись и шифрование”: “Настройки электронной подписи и шифрования”.



Переходим на вкладку “Программы”, находим “КриптоПро CSP (ГОСТ 2001)” и “КриптоПро CSP (ГОСТ 2012)” — для этих программ указываем путь “/opt/cprocsp/lib/amd64/libcapi20.so”. После ввода пути программы можем переключиться на любой пункт списка, состояние результата проверки должно смениться с “Не указан путь к программе” на “Установлена на компьютере”.

Добавляем сертификаты и проверяем работу СКЗИ:

Переходим на вкладку “Сертификаты”, нажимаем кнопку “Добавить” из установленных на компьютере. Выпускать сертификат на стороне тонкого клиента я ещё не пробовал, раньше он не работал. Выбираем сертификат из установленных в хранилище пользователя, нажимаем кнопку “Проверить”, вводим пинкод пароль. Должны получить окно с прошедшей проверкой сертификата:


Добавляем оператора документооборота:

Теперь нам нужно добавить оператора документооборота, если он не настроен на уровне Windows клиента ранее. Для этого открываем “Отчеты” -> “1С-Отчетность”: “Регламентированные отчеты”. Из открывшейся вкладки выбираем пункт “Настройки” и далее “Заявление на подключение к 1С-Отчетности” или “Настройки обмена с контролирующими органами”. В случае ручной настройки обмена с КО, нажимаем на направление сдачи отчетности, которое мы настраиваем, например ФНС. В открывшемся окне выбираем “Документооборот в универсальном формате с использованием встроенного механизма” и создаете новую учетную запись документооборота (или выбираете уже существующую).


В “Назначении” учетной записи указываете направления обмена у данного оператора, выбираете оператора ЗАО “Калуга-Астрал” или ООО “Такском”. Почтовый адрес — указываете адрес электронной почты выданный оператором ЭДО. Идентификатор документооборота — указываете ваш, присвоенный оператором ЭДО и идентификатор оператора (первая часть вашего идентификатора до дефиса).


Осуществляем автонастройку оператора:

Выбираете пользователей и нажимаете “Автонастройка”. Должен пройти обмен данными, расшифроваться xml контейнер с настройками и обновиться сертификаты головных и подчиненных УЦ. Данную операцию (автонастройку) нужно провести первый раз вручную на всех линукс-клиентах.


Настраиваем сервер на автоматический обмен ЭДО и ЭДКО (опционально):

Открываем “Администрирование” -> “Настройки программы”: “Обслуживание”. Далее “Регламентные операции”: “Регламентные и фоновые задания”. Находим в списке “Обновление проверок контролирующими органами”, “Получение результатов отправки отчетности” и “Обмен с контролирующими органами”. Назначаем расписание обмена. У меня стоит ежедневно. Запрашиваться будет только при открытии клиентской программы 1 раз в день.

Проверяем работу оператора документооборота, ЭДО и 1С-Отчетности.

К сожалению все ещё остается проблема в реализациях подсистем ЭДО и ЭДКО. Например при получении подтверждения и отправке отчета в контролирующие органы необходимо каждый раз вводить пин-код контейнера для каждого факта подписания данных. Пин-код, сохраненный в настройках ЭДО не учитывается конфигурацией 1С, возможно такое поведение исправят в следующих версиях ПО. Одно можно сказать точно: лед тронулся.

Читайте также: