Авторизация на портале Госуслуг с помощью Рутокен ЭЦП

    Одному из сотрудников нашей компании понадобилось зарегистрироваться на портале Госуслуг. Как известно, на портале сейчас есть возможность входить в личный кабинет по логину/паролю, либо по электронной подписи. Вариант с логином/паролем был отброшен в силу профессиональной паранойи, и поехал сотрудник в УЦ Ростелекома — оператора системы — получать сертификат. В УЦ ему в качестве носителя электронной подписи/аппаратного СКЗИ не предложили Рутокен ЭЦП. В силу корпоративного патриотизма сотрудник решил не форсировать события, а попробовать-таки зайти на Госуслуги, используя для электронной подписи Рутокен ЭЦП.
    Что из этого получилось, описано под катом.





    • На портале Госуслуг для проведения ЭП используется специальный браузерный плагин, который достаточно универсален. В качестве средств ЭП он умеет “подцеплять” как аппаратные СКЗИ, так и программные криптопровайдеры.
      Рутокен ЭЦП в этом плагине поддерживается.
    • Поддерживается Рутокен ЭЦП через нашу библиотеку, реализующую стандарт PKCS#11.
    • Процедура входа в личной кабинет на портале Госуслуг по ЭП представляет собой подпись случайных данных, отправляемых сервером. Подпись формируется в формате PKCS#7. Для аутентификации пользователя сервер использует информацию из сертификата X.509, а успешная проверка подписи подтверждает наличие у пользователя закрытого ключа, соответствующего сертификату.
    • Для того чтобы сервер принял пользовательский сертификат, тот должен быть усиленным квалифицированным.


    Задача разбилась на подзадачи:
    • Сгенерировать ключ на Рутокен ЭЦП в формате, совместимом с форматом плагина Госуслуг, то есть через библиотеку PKCS#11
    • Узнать, какие аккредитованные УЦ выдают квалифицированные сертификаты для физлиц
    • Договориться с одним из этих УЦ, что он выдаст сертификат на основе запроса, сделанного удаленно.
    • Сформировать правильный запрос на квалифицированный сертификат.
    • Транспортировать запрос в УЦ.
    • Получить сертификат и записать его на Рутокен ЭЦП в формате, совместимом с форматом плагина Госуслуг, то есть через библиотеку PKCS#11.


    С УЦ мы договорились довольно быстро. Один из основных наших партнеров, УЦ СКБ Контур, аккредитован в системе Госуслуг и согласился выдать нам сертификат по описанной схеме.
    Для решения технических вопросов мы решили использовать Рутокен Плагин, который также работает через библиотеку PKCS#11 и совместим с плагином Госуслуг.

    Центр регистрации


    Для генерации ключа, создания запроса и записи сертификата мы сделали набор web-страниц, который условно назвали Центр регистрации. Этот Центр регистрации не требует серверной части, все операции осуществляются на клиенте. Для работы Центра регистрации требуется установка Рутокен Плагин.

    Центр регистрации позволяет:
    • Просматривать ключевые пары и сертификаты на подключенных устройствах Рутокен ЭЦП (под просмотром ключевых пар понимается просмотр информации о них)
    • Генерировать новую ключевую пару
    • Формировать запрос в формате PKCS#10 для выбранной ключевой пары
    • Формировать запросы по шаблону
    • Импортировать сертификат на устройство
    • Удалять сертификат с устройства


    Генерация ключа и формирование запроса на сертификат

    Ниже приведена инструкция по генерации ключа и формированию запроса на сертификат c помощью Центра регистрации:

    1. Запустить Центр регистрации:



    2. Подключить Рутокен ЭЦП к компьютеру, выбрать токен, ввести PIN-код:


    После выбора токена отобразится меню:



    3. Нажать кнопку “Создать ключ”:



    Затем нажать «Создать запрос на этом ключе»



    4. На странице создания запроса выбрать шаблон “СКБ Контур, для физлиц”, заполнить поля запроса, нажать кнопку “Создать запрос” (все поля должны быть заполнены, в данном случае реализован тестовый пример):



    5. Скопировать запрос для отправки его в УЦ:



    6. Сгенерированный ключ появился в списке:



    После отправки запроса сотруднику пришло уведомление о необходимости явиться в офис УЦ для подтверждения личности.
    После прохождения проверки наш сотрудник получил сертификат.

    Импорт сертификата

    1. Выбрать в списке токен, нажать кнопку “Импортировать сертификат”, полученный сертификат вставить в форму ввода, нажать кнопку “Импортировать”:



    2. При импорте выбрать тип сертификата “Пользовательский”:



    3. После этого появится окно с отображением сертификата и сообщением об успешном импорте на Рутокен ЭЦП (на картинке приведен пример импорта тестового сертификата, полученного в тестовом УЦ):



    4. Сертификат отобразится в списке:



    Вход на портал Госуслуг

    Сотрудник установил плагин Госуслуг, и ему удалось войти на портал по ЭП.



    Выбираем “По электронной подписи”:



    Выбираем сертификат:



    Вводим PIN-код:



    Попадаем в личный кабинет:



    Вместо заключения

    Концепция аппаратных СКЗИ, выполненных в различных форм-факторах, может быть востребована в массовых проектах, ориентированных на физлиц. В первую очередь за счет упрощения использования криптографии. Плагины, осуществляющие интеграцию браузера и аппаратных криптографических решений должны развиваться в сторону увеличения легкости установки и расширения возможностей. Тогда эти решения будут чаще и больше использовать.

    Для того, чтоб была возможность выдачи квалифицированных сертификатов на Рутокен ЭЦП, которые можно было бы использовать с плагином Госуслуг или с Рутокен Плагин, сделана локальная версия Центра регистрации, ее можно использовать непосредственно в точках выдачи сертификатов.
    Метки:
    «Актив» 106,84
    Компания
    Поделиться публикацией
    Комментарии 35
    • 0
      А нет возможности повторить ваш фокус на debian/ubuntu? В свете последних мировых событий переход на opensource выглядит все более необходимым…
      • –1
        Дык всё делается через openssl/opensc (https://www.opensc-project.org/opensc/wiki/AktivRutokenECP), только параметры при создании csr нужно правильные вписать.
        • 0
          Да, а плагин мне действительно приехал (.deb). Приятно, спасибо.
          • –1
            Плагин Госуслуг с Рутокен ЭЦП работает через нашу библиотеку PKCS#11, которая несовместима с opensc.
            • 0
              Если бы вы прошли по ссылке, то увидели бы, что для opensc ваша библиотека PKCS#11 не нужна, ровно как и плагин.
              • +1
                Наша команда добавляла в opensc поддержку Рутокен ЭЦП, поэтому мы в курсе как там все устроено. Если вы средствами opensc сделаете ГОСТ-овый ключ на токене, то у плагина Госуслуг будут проблемы с его использованием.
                • 0
                  Занятно. Ключ будет Не Такой или он будет лежать не по тому пути?
                  • +1
                    Формат хранения ключа разный.
              • 0
                Не как у всех конечно, но на этот раз хоть драйвера есть для всего www.rutoken.ru/support/download/pkcs/
                • 0
                  Не могли бы вы развернуть свою мысль «не как у всех»?
                  • 0
                    Имел в виду лишь отличающийся формат хранения ключа. Возможно, для этого конечно и были какие-то веские причины при написании ГОСТ( и, соответственно, вашего собственного формата). Но вот ставить отдельную либу при наличии открытой широкоизвестной слегка напрягает.
                • 0
                  Что мешало сделать библиотеку совместимой? Опять ищем свой национальный путь?
                  • 0
                    Вы не поняли. В opensc поддерживается Рутокен ЭЦП. В частности, в библиотеке opensc-pkcs11 — open source реализации стандарта PKCS#11.
                    Но формат хранения ключей и сертификатов, принятый в opensc, долгое время не был адаптирован и стандартизован под ГОСТы. Поэтому мы вынуждены были написать свою библиотеку PKCS#11. Наш формат хранения данных на токене в плане поддержки ГОСТов более универсален.
                    Соответственно, наша библиотека PKCS#11 имеется под все основные платформы (Win, Linux, MAC OS, iOS, Android).
                    • 0
                      Хотелось бы верить. С моей, «админо-потребительской» точки зрения, все как-то не сильно здорово с поддержкой этого всего счастья под линуксом. Купил для опытов Rutoken Lite. Долго бился, пока не понял, что купил сильно порезанную версию. Теперь добыл ЭЦП-вариант. Нужно будет поднимать с двухфакторную аутенфикацию с его использованием. Так что поглядим :)

                      Еще вопрос, про поддержку. Вы не думали связаться с командой, собирающей Russian Fedora, и выложить свою библиотеку в виде нормального rpm-пакета в репозиторий? Думаю, в процессе отладки запуска работы токена «из каробки на свежепоставленной федоре» решатся множество проблем.
                      • 0
                        У нас достаточная база знаний по интеграции устройств Рутокен и Linux, представленная на портале документации dev.rutoken.ru/pages/viewpage.action?pageId=2228266. Там есть и материалы, посвященные двухфакторной аутентификации.
                        Также есть темы на форуме.

                        По Fedora подумаем.

                        • 0
                          А «Центр управления Рутоке» — только под Windows?
                          • 0
                            Если речь идет о «Панели управления Рутокен», то да. Но следует понимать, что в opensc есть универсальная утилита pkcs11-tool, которой можно «подложить», например, нашу библиотеку PKCS#11 под Linux и с ее помощью «управлять» Рутокенами.
                            • 0
                              dev.rutoken.ru/pages/viewpage.action?pageId=4227143 тут сказано, что «понадобится Рутокен ЭЦП, отформатированный через Панель управления Рутокен», никаких упоминаний про эту утилиту.
                              Проблема во многом в том, что информация публикуется отрывочно. Что бы использовать рутокен нужно перерыть кучу форумов, склеить информационные «обрывки». Плотная работа с какой-нибудь командой, поддерживающей linux-дистрибутив, помогла бы выловить детские болезни и сделать действительно удобный продукт. Многие вещи, думаю, вы не можете протестировать априори просто потому, что знания уже в голове есть.
                      • 0
                        так что, есть шанс войти в интернет банк из под мака, не запуская винду для этого?
              • +3
                Как обычно — сделано неудобно.
                • 0
                  Что именно неудобно?
                  • +1
                    То, что действий для авторизации больше чем два/3
                    Должно быть:
                    1) Подключил ключ
                    2) Нажал в браузере авторизоваться
                    3) Подтвердил действие
                    • 0
                      Для авторизации действий примерно столько, сколько вы написали.

                      А процедура получения сертификата производится раз в год.

                      Вы не разобрались в материале.
                • 0
                  Можете опубликовать такой же сценарий для Linux?
                  • 0
                    Ничем не отличается от windows-cценария. «Центр регистрации» — это кроссплатформенное локальное web-приложение, так же как и Рутокен Плагин.
                    • 0
                      Цент регистрации не критичная штука. Готовый сертификат с токеном можно получить в том же СКБ Контур. А вот запустить эту прелесть под линуксом не имея объемных знаний об устройстве этой всей кухни… та еще песня. Сразу скажу, у меня не получилось запустить пару «ЭУК — Госуслуги» на RussianFedora19, пришлость запускать виртуалку. И там тоже как-то все через одно место: медленно и неудобно.
                      • 0
                        Тут какая штука.
                        Если получить токен с готовым сертификатом в УЦ, то вы вынуждены будете установить и сконфигурировать на Linux СКЗИ для работы с этим сертификатом. Причем СКЗИ в большинстве случает должно быть тем же, с помощью которого в УЦ делался ключ.
                        Иначе можно нарваться на несовместимость.
                        Установка и конфигурирование СКЗИ может быть нетривиальной задачей.

                        • 0
                          Т.е. отечественные разработчики таки пошли своим путем и «положили» на стандарты? Или просто соотвествующих стандартов просто не существует?
                          • 0
                            На данный момент нет совместимости по формату хранения закрытого ключа. Но соответствующие работы ведутся в рамках ТК26. Следует понимать, что многие СКЗИ работают с Рутокен ЭЦП через нашу библиотеку PKCS#11. В этом случае совместимость есть.
                  • 0
                    Скажите, а есть возможность взять ключ для налоговой инспекции (хранящийся на rutoken S 64k с правом экспорта), и как-нибудь хитро перенести его в тот же рутокен или другой, но чтобы он заработал из под mac os?
                    Второй вопрос — можно ли взять ключ госуслуг из штатной jakart'ы и перенести в rutoken S/ЭЦП? (опять же для использования под маком).
                    • 0
                      На маке госуслуговский плагин отказывается работать с токенами =(
                    • 0
                      Есть проблема с подключением к порталу с ПК Windows 7 Home, Service pack 1 (все обновления установлены).

                      После того как токен вставлен в USB-порт статус определения устройства таков:

                      image

                      При попытке авторизоваться на портале (Internet Explorer 11.0.9600.17280), секунд 10 отображается следующее окно:

                      image

                      после чего оно исчезает без всяких дополнительных сообщений, авторизации не происходит.

                      Буквально несколько дней назад авторизация проходила нормально (как на основной портал, так и на бета-версию), но опять же только через IE, при попытке подключиться в Firefox выдавалось сообщение, что необходимо установить плагин.

                      В чем может быть проблема? Как провести диагностику? Звонить в техподдержку Госуслуг?
                      • 0
                        Интересно узнать, где еще кроме Портала ГосУслуг можно использовать носители со встроенной криптографией?

                        Интересуюсь как компания, предоставляющая услуги по выпуску квалифицированной ЭП
                      • 0
                        И все же есть капля дегтя в этом бочке Меда!
                        На токене оказывается может храниться один и только один сертификат и его ключевая пара при доступе на портал Госуслуг.
                        И если вам потребуется получить еще один сертификат, то вам придется покупать еще один токен PKCS#11.
                        Вообще-то это легко решаемая проблема(Тот же ФНС умеет работать с несколькими сертификатами на токене PKCS#11).

                        Нужна добрая воля портала Госуслуг!!!

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое