Настройка электронной подписи (ЭП) в Linux — это всегда приключение. Но попытка завести плагин Госуслуг на свежей Ubuntu 24.04 LTS превращается в настоящий хардкорный квест. Официальные инструкции безнадежно устарели, инсталляторы выдают ошибки, а техническая поддержка обычно разводит руками.
В этой статье я пошагово разберу, как заставить всё это работать, когда «всё против вас»: от конфликтов OpenSSL 3.0 до капризов Wayland и Native Messaging.
В чем проблема?
Ubuntu 24.04 принесла много обновлений, которые «сломали» старое криптографическое ПО:
OpenSSL 3.0 по умолчанию. Плагин Госуслуг требует старый libssl1.1, которого в репозиториях больше нет.
Wayland. Графические окна плагина (ввод ПИН-кода) часто не отрисовываются или вешают процесс.
Native Messaging Host. Яндекс.Браузер и Chromium часто «не видят» плагин из-за жестких ограничений безопасности и путаницы в ID расширений.
Шаг 1. Подготовка «фундамента» (Библиотеки)
Плагин Госуслуг (версии 1.3.18/19) — это 64-битное приложение на Qt5. Ему нужны системные библиотеки, которые в 24.04 называются иначе или отсутствуют.
1.1. Ставим зависимости Qt5 и XCB
code Bash
sudo apt update sudo apt install -y libqt5gui5t64 libqt5widgets5t64 libqt5network5t64 libqt5sql5t64 \ libxcb-xinerama0 libxcb-cursor0 libxcb-util1 libxkbcommon-x11-0
1.2. Решаем проблему libssl1.1
Плагин не запустит модуль crypto без OpenSSL 1.1. Скачаем его из архивов предыдущих версий: code Bash
wget http://azure.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1\_1.1.1f-1ubuntu2\_amd64.deb sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
1.3. Исправляем libxcb-util
Системная библиотека в Ubuntu 24.04 имеет версию .1, а плагин ищет .0. Лечим симлинком: code Bash
sudo ln -s /usr/lib/x86_64-linux-gnu/libxcb-util.so.1 /usr/lib/x86_64-linux-gnu/libxcb-util.so.0
Шаг 2. Установка плагина и «чистка» модулей
Установите плагин в /opt/iitrust/gosuslugi_plugin/. Но не спешите запускать. Внутри папки bin лежат модули для всех типов токенов (eSmart, JaCarta и т.д.). Если вы используете Rutoken, другие модули могут вызывать конфликты и «вечную крутилку» при поиске сертификатов.
Отключаем лишнее:
code Bash
sudo find /opt/iitrust/gosuslugi_plugin/bin/ -name "*esmart*.so" -exec mv {} {}.bak \; sudo find /opt/iitrust/gosuslugi_plugin/bin/ -name "*jacarta*.so" -exec mv {} {}.bak \;
Шаг 3. Native Messaging: связываем Браузер и Плагин
Это критический этап. Браузер запускает плагин не сам, а через JSON-манифест.
3.1. Создаем универсальный «скрипт-шпион»
Вместо прямого запуска бинарника мы создадим обертку в /usr/bin/ifc_chrome_host. Это позволит нам прокинуть нужные переменные окружения и вести лог ошибок. code Bash
sudo bash -c 'cat > /usr/bin/ifc_chrome_host << "EOF" #!/bin/bash export QT_QPA_PLATFORM=xcb export QT_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins export LD_LIBRARY_PATH=/opt/iitrust/gosuslugi_plugin/lib:$LD_LIBRARY_PATH # Лог для отладки echo "=== ЗАПУСК ПЛАГИНА $(date) ===" >> /tmp/gosuslugi_err.log /opt/iitrust/gosuslugi_plugin/bin/gosuslugi_plugin "$@" 2>> /tmp/gosuslugi_err.log EOF' sudo chmod 755 /usr/bin/ifc_chrome_host
3.2. Настраиваем манифест (JSON)
Важно: Яндекс.Браузер часто использует специфичный ID расширения. В моем случае это был jabjbhgjaidecageckilhonbggakppme.
Создаем файл /etc/opt/yandex/browser/native-messaging-hosts/ru.rtlabs.ifcplugin.json: code JSON
{ "name": "ru.rtlabs.ifcplugin", "description": "IFC Plugin", "path": "/usr/bin/ifc_chrome_host", "type": "stdio", "allowed_origins":[ "chrome-extension://jabjbhgjaidecageckilhonbggakppme/", "chrome-extension://pbefkdcndngodfeigfdgiodgnmbgcfha/", "chrome-extension://nkfegcglffejfnakfkihkegdkfmomgid/" ] }
Шаг 4. КриптоПро: Ошибка 30033 и привязка провайдера
Даже если плагин запущен, вы можете увидеть бесконечную загрузку или ошибку «Провайдер не поддерживается» (30033). Это происходит потому, что в свойствах установленного сертификата не прописано имя провайдера КриптоПро.
Исправляем через консоль:
Найдите ваш контейнер (например, через csptest -keyset -enum_cont -fqcn) и переустановите сертификат с явным указанием имени провайдера: code Bash
/opt/cprocsp/bin/amd64/certmgr -inst -cont '\\.\Aktiv Rutoken lite 00 00\ВАШ_ID_КОНТЕЙНЕРА' \ -provname "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -provtype 80
Шаг 5. Тонкости ПИН-кода и Wayland
В Ubuntu 24.04 (Wayland) окно ввода ПИН-кода может прятаться за окном браузера.
Совет: Если нажали «Вход по ЭП» и ничего не происходит — нажмите Alt+Tab. Окно «Госплагин» может ждать вас там.
ПИН-код по умолчанию: Для Rutoken Lite это обычно 12345678.
Итог
После всех манипуляций цепочка начинает работать:
Портал Госуслуг обращается к расширению.
Расширение через манифест запускает наш скрипт /usr/bin/ifc_chrome_host.
Скрипт подтягивает libssl1.1 и отрисовывает окно ввода ПИН-кода через xcb.
Плагин через явно указанный provname подписывает данные в КриптоПро.
Если вы всё сделали правильно, но видите сообщение «Вход по электронной подписи отключён» — поздравляю! Это победа. Это значит, портал успешно принял вашу подпись, узнал вас, и вам осталось только включить соответствующий тумблер в настройках безопасности своего профиля.
Надеюсь, этот опыт сэкономит вам пару дней жизни!
