При входе на сайт госуслуг через ЭЦП у вас может возникнуть ошибка: — Не установлен плагин
и предлагается выполнить действия для его установки
Первое, что необходимо сделать — это установить плагин, перейдя по ссылке — ds-plugin.gosuslugi.ru/plugin/upload/Index.spr
И вот здесь я застрял на длительное время, не понимая, что делаю неправильно и почему плагин не работает и не предлагает выбрать ЭЦП для входа на портал госуслуг.
А вся суть проблемы оказалась в том,
Когда мы переходим на сайт, мы сразу кликаем на первую ссылку (стрелка на рис. 1) и не обращаем внимания на две нижние кнопки.
Для того чтобы плагин для ЭЦП заработал в браузерах Mozilla Firefox и Google Chrome, нужно нажать на соответствующую кнопку (стрелка на рис. 2). В моем случае это был Firefox, и после клика нас перенаправляет на другую страницу, где мы устанавливаем плагин.
По завершении установки можно убедиться, что плагин успешно установлен.
Способы проверки установленного плагина для ЭЦП в Mozilla Firefox
Кликните на иконку с тремя линиями (меню)
в разделе Дополнения и темы можно увидеть все установленные плагины в вашем браузере
Как можно заметить, у нас установлен плагин или расширение — Дополнение для плагина Госуслуги
и его статус активен (индикатор синего цвета)
Обеспечиваем работу плагина госуслуг для всех пользователей в терминальной среде
Уже более года все наши сотрудники работают исключительно в опубликованных приложениях, которые централизуются через Parallels RAS. У нас также имеется автоматический механизм публикации ЭЦП: когда авторизованный пользователь заходит на сайт, например, таможни, предварительно в его HKCU записывается ЭЦП компании и запускается нужный плагин. Это прекрасно работает с КОНТУР, СБИС, КРИПТО-ПРО, но плагин от госуслуг (IFCPlugin) потребовал доработок, и к разработчикам остались вопросы…
Когда поступила заявка на установку очередного плагина для чтения ЭЦП, я не ожидал никаких сложностей. Для работы с ЭЦП у нас выделен отдельный RDS-хост, на котором уже установлено несколько плагинов, и всё отлично функционирует. Я скачал плагин госуслуг с официального сайта и запустил установку в машинном контексте из привилегированного шелла:
msiexec -i c:pathtofilemypackage.msi ALLUSERS=1
На первый взгляд, установка прошла успешно. В списке установленных программ на этом хосте появился «Плагин пользователя систем электронного правительства», и под своей учетной записью я смог авторизоваться с помощью ЭЦП. Однако у других пользователей плагин не заработал, словно и не был установлен.
Куда же ты запропастился?
Плагин госуслуг, в отличие от других подобных решений, никак не уведомляет пользователя о своем присутствии. Нет иконки в трее, нет группы в стартовом меню, и я не нашел его в «Program Files». Так как под моей учетной записью авторизация в Chrome работала, а она функционирует с помощью браузерного плагина, который должен иметь MessagingHost, я решил поискать этот процесс.
Каково же было мое удивление, когда я обнаружил этот процесс (ifc_chrome_host.exe) в собственном $Env:APPDATA! Иными словами, инсталлятор плагина, полностью игнорируя машинный контекст, установил приложение внутри моего профиля. Причем даже не в $Env:LOCALAPPDATA, а в подлежащую роумингу часть профиля. У нас включен роуминг аппдаты (на эту тему можно долго спорить, но мы считаем, что в нашем случае это правильно). То есть IFCPlugin установился в мой профиль, хранящийся на файловом сервере, куда доступ имею только я, но зарегистрировал себя и свои классы в машинном контексте на RDS-хосте. Логично, что у других пользователей плагина, по сути, не было.
Достаем напильник
Открываем старую добрую orca и смотрим на структуру директорий установщика IFCPlugin.msi:
TARGETDIR = AppDataFolder. Чем руководствовались разработчики, я понять не смог. Заменяем на ProgramFiles64Folder или ProgramFilesFolder по вкусу.
Как можно заметить, всё, кроме классов, прописывается в HKCU. Так как меня интересовала работа только плагина для Google Chrome, я изменил ветку только для трёх отмеченных параметров на 2, что соответствует HKLM. Предполагаю, что для Firefox это также будет работать аналогично.
Ещё одна доработка
Произвожу установку заново. Плагин, как и ожидалось, появляется в $Env:ProgramFiles, но у пользователей сразу же прекращается процесс ifc_chrome_host.exe, несмотря на его запуск. Используем procmon для анализа недостатков.
Выясняется, что он пытается записывать логи в следующую директорию:
$Env:ProgramFilesRostelecomIFCPluginX.X.X.Xx32LOGS
Пользователи, по умолчанию, не имеют прав на запись в эту папку. Исправляем это.
Заключение
Всё работает. Почему разработчики приняли такое решение и зачем это было сделано именно таким образом, для меня остаётся загадкой.