Еще не так давно периодическая процедура типа «сдача налоговой отчетности» заставляла нервно дергаться глаз: для того, чтобы сделать это онлайн — нужна электронная подпись на USB‑токене, для того, чтобы работать с USB‑токеном нужно установить специальную программу (широко известную в узких кругах), а для того чтобы установить эту специальную программу — нужен компьютер с Windows.
Да еще у нее может закончиться срок лицензии, и тогда его надо продлевать...
Но что делать, если больше ни для чего мне Windows не нужен нигде и никогда? Держать на полке специальный старый ноубук (который все время мешается)? Завести образ виртуальной машины, который нужно будет в определенное время запускать только ради того чтобы отправить файл?
Да еще периодически обновлять программу, выполнять хотелки типа «нужно установить версию ХХХ не ниже YYY!», бороться со странными багами после установки версии XXX...
Причем, нельзя это сделать где‑то на сервере и работать удалённо — получится ошибка типа «по идейным причинам программа не работает с ключом через удаленный Рабочий стол!»‑ ну как‑то так.
Изволь поставить на свой компьютер и работать лично! Очень «удобно», когда у тебя их несколько в разных местах...
Конечно, для большинства это вообще неактуально, так как они живут в Windows, но я про свой случай говорю, а не про всеобщий.
И вот наконец‑то что‑то изменилось.
По крайней мере для Рутокен, появилась поддержка работы с ним в Линуксе, а на сайте ИФНС научились обходиться без широко известной программы.
Теперь работает это примерно так:
Допустим, у нас юрлицо или ИП — в налоговой выдали электронную подпись, записав ее на Рутокен ЭЦП 2 или 3 (не Lite! Это другое!).
На сайте ИФНС заходим в соответствующий Личный Кабинет, и выбираем там что‑то вроде «Вход в личный кабинет с помощью Рутокен ЭЦП...»
Сайт либо сразу сам начнет проверять возможность работы, либо предложит «проверить условия подключения».
Условия следующие:
— один из совместимых браузеров (Chrome, Firefox, Яндекс.Браузер и даже какой‑то Atom)
— установленный Рутокен Коннект (расширени браузера и программа)
— установленный Рутокен Плагин (расширение браузера и программа)
— сам USB‑токен и сертификат на нём.
Можно, конечно, просто потыкать по предложенным ссылочкам, но мне стало интересно посмотреть, как оно работает «под капотом».
И вот, на примере Firefox — настроим работу с электронной подписью:
Браузер совместимый — ок, сразу переходим к следующему пункту: «Установить Адаптер Рутокен Коннект».
По ссылке устанавливается расширение браузера, но оно сразу не заработает, и вот почему:
Пока установилось только расширение браузера. В каталоге ~/.mozilla/firefox/<current_profile>/extensions/ появился файл rutokenconnect@rutoken.ru.xpi
По сути внутри javascript, который перехватывает определенные обращения на странице и перенаправляет их к программе на компьютере, а её‑то у нас пока нет.
Если щелкнуть по сообщению об ошибке — браузер перейдет на страницу загрузки программы с сайта Рутокен.
В моем случае выбираю «Пользователям GNU/Linux» и ищу что‑то подходящее, для платформы ARM64, потому что у меня — Armbian.
И да, оно там есть — не только под x86, но и под arm64.
Скачиваю.deb‑файл, и можно просто установить его командой dpkg ‑i filename, но это не интересно.
Лучше распакую:
dpkg -x rtconnect-xxxx-arm64.deb dir1
cd dir1
Внутри — дерево каталогов, которые должны бы создаваться при установке.
Вручную можно перенести./opt/activco и./var/opt/activco — это сама программа и место для сертификатов, а в./opt/activco/rutokenconnect/ есть файл ru.rutoken.rtconnect.firefox.json — ссылку на него нужно поместить в ~/.mozilla/native‑messaging‑hosts/
cd var
sudo cp -R opt /var/
cd ../opt
sudo cp -R activco /opt/
cd ~/.mozilla
mkdir native-messaging-hosts
cd native-messaging-hosts
ln -s /opt/activco/rutokenconnect/ru.rutoken.rtconnect.firefox.json .
Это примерно то же самое, что установка через dpkg ‑i, но только я сам вижу что и куда копировать, не ставлю лишнего, и прописываю native‑message‑hosts локально для конкретного пользователя.
Что это вообще и зачем: установленный плагин браузера смотрит вот в этот каталог native‑messaging‑hosts, ищет там подходящий для него json‑файл, а в этом файле указано, с каким бинарником он должен взаимодействовать:
{
"name": "ru.rutoken.rtconnect",
"description": "Rutoken Connect",
"path": "/opt/aktivco/rutokenconnect/rtconnect",
"type": "stdio",
"allowed_extensions": [ "rutokenconnect@rutoken.ru" ]
}
То есть, через stdio работает с программой, указанной в path.
После установки перезапускаем браузер, снова «проверяем условия подключения»: теперь расширение браузера должно увидеть свою программу и заработать с ней.
Следующий шаг — расширение Адаптер Рутокен Плагин и соответствующий бинарный файл к нему — всё точно так же, по тому же принципу.
Ну и наконец, после того как всё установлено — остается вставить USB‑токен, и зайти в систему.
А если вы не хотите, чтобы какие‑то там расширения могли случайно подсматривать, что у вас за страницы открыты — их, во‑первых, можно просто отключить на время, а во‑вторых, ничего не мешает создать в системе отдельного пользователя и настроить расширения там.
Также, теоретически, можно настроить это всё на удаленном сервере, подключаясь к нему rdp‑клиентом.
Но главное, больше не нужно хранить отдельную машину только ради того чтобы иногда читать ключи.
Могут же сделать хорошо, когда хотят...