Еще не так давно периодическая процедура типа «сдача налоговой отчетности» заставляла нервно дергаться глаз: для того, чтобы сделать это онлайн — нужна электронная подпись на 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‑клиентом.
Но главное, больше не нужно хранить отдельную машину только ради того чтобы иногда читать ключи.
Могут же сделать хорошо, когда хотят...