Настройка электронной подписи (ЭП) в 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 Bashsudo 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 Bashwget 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 Bashsudo 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 Bashsudo 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 Bashsudo 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 подписывает данные в КриптоПро.
Если вы всё сделали правильно, но видите сообщение «Вход по электронной подписи отключён» — поздравляю! Это победа. Это значит, портал успешно принял вашу подпись, узнал вас, и вам осталось только включить соответствующий тумблер в настройках безопасности своего профиля.Надеюсь, этот опыт сэкономит вам пару дней жизни!Об авторе и студии
Этот материал подготовлен командой ООО «АЙТИ МИРОВАЯ ВЕБ СТУДИЯ». Мы занимаемся профессиональной веб-разработкой, внедрением сложных IT-решений и интеграцией Linux-систем в бизнес-процессы. Если вашему бизнесу нужна помощь в импортозамещении, настройке защищенных рабочих мест или разработке ПО — мы всегда на связи.
Наши контакты:
Сайт: https://worldwebstudio.net/
Интернет магазин:https://gswordpress.ru/ru_ru/
Email: info@worldwebstudio.net
Telegram: @VladimirIWSПоддержать автора
Если эта статья сэкономила вам часы (или дни!) времени и помогла избежать покупки лицензии на Windows, вы можете отблагодарить автора «чашкой кофе».
Это мотивирует нас разбирать новые сложные кейсы и делиться ими с сообществом.
Перевод по СБП / Карта: 2202 2084 5977 1045 сбер