Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Общая информация

Плагин Рутокен Web — это специальный браузерный плагин, созданный для работы с устройством Рутокен Web. Разработка данного плагина была прекращена в 2016 году.

Рутокен Плагин — это гораздо более современный и функциональный браузерный плагин предназначенный для работы с основной линейкой устройств Рутокен, включая ЭЦП 2.0, PINPad, ЭЦП PKI. В настоящее время активно ведется его разработка. Плагин рекомендован для всех устройств Рутокен.В данной инструкции продемонстрирован процесс

Он активно дорабатывается и поддерживается и рекомендован для работы со всеми устройствами семейства Рутокен ЭЦП, а также ограниченно поддерживает "зеленые токены" Рутокен Web.

Тянуть два почти одинаковых продукта нецелесообразно, поэтому доработки плагина Рутокен Web прекращены, а все новые возможности и фичи получает только Рутокен Плагин.

API плагина Рутокен Плагин включает в себя самые востребованные фичи плагина Рутокен Web, но избавлен от устаревших и малоиспользуемых функций. 

Эта инструкция подготовлена специально для плавного перехода с плагина Рутокен Web на Рутокен Плагин. Это возможно  

Она пригодиться в том случае, если у вас уже встроена поддержка  устройства поддержка "зеленых токенов" (устройств Рутокен Web, используется ) через плагин Рутокен Web и серверная часть работает с данными, сгенерированными плагиномкоторыми оперирует плагин Рутокен Web

Предложенная схема требует минимальных изменений в клиентском коде и абсолютно не затрагивает серверный код.

В результате описанных процедур вы получите возможность:

  • использовать современный и поддерживаемый плагин (получить больше поддерживаемых платформ и браузеров)
  • перейти на новые отечественные алгоритмы электронной подписи ГОСТ 2012
  • перейти на мировые стандарты электронной подписи RSA (до 2048 бит)
  • перейти с "сырой" подписи на полноценную подпись с атрибутами формата PKCS#7 и сертификаты X509
  • использовать всю линейку продуктов

...

  • семейства Рутокен ЭЦП, не ограничиваясь моделью Рутокен Web
  • использовать более современную модель promise в Javascript 

 

Для примера будем использовать демонстрационный сайт:

http://php.rutokenweb.ru/

Код Например, код серверной части сайта написан на PHP. Для , но и для других языков алгоритм будет тот же.

...

В этой схеме нет сложностей, связанных с сертификатами . В процессе ее реализации происходит только X509, и стандартами подписи PKCS#7 (CMS), происходит только "сырая" подпись данных и проверка корректности самой подписи.

Однако, при желании, или необходимости сертификаты X509 и CMS могут быть сравнительно легко подключены.

Формирование электронной подписи через плагин Рутокен Web производится по алгоритму ГОСТ Р 34.10-2001.

...

  1. Установим Рутокен Плагин. Актуальная версия плагина доступна по ссылке:
    https://www.rutoken.ru/support/download/rutoken-plugin/
  2. Изменим загрузчик плагина. Для этого заменим на страницах или в системе сборки скрипт rutokenweb.js на rutoken.js:
    https://www.npmjs.com/package/rutoken
    Оба эти скрипта используют Promise.
  3. Если у вас установлен и работает rutokenweb.js, то зависимости должны быть. 
  4. Если rutokenweb.js не работает, то следует установить скрипт для работы с промисами. Для этого перейдите по ссылке:
    https://github.com/jakearchibald/es6-promise
  5. Используйте модуль проверки совместимости плагина и браузера:
    https://www.npmjs.com/package/rutoken-browser-check
    Он дает возможность локализовать проблемы при инициализации.
    У данного скрипта есть зависимость:
    https://www.npmjs.com/package/bowser
  6. Изменим логику инициализации работы плагина. Для этого:
    - вынесем отдельный файл boot.js, чтобы не копировать;
    - подключим его на всех страницах, где это необходимо;
    - удалим лишние переменные;
    - удалим функцию token_refresh из подписи на onload странице.
    В общем случае, плагин получается в финальной resolve цепочке промисов, в которой мы передаем его конструктору нашей обертки вместе с методом получения PIN-кода.
    Этот метод нужен, чтобы эмулировать отображение окна со списком логинов и обработать выбор корректного id.
    Возвращается промис с id устройства и PIN-кодом, введенным пользователем.
    Все ошибки инициализации прилетают в reject промиса.
    Ошибки от плагина прилетают  другие, поэтому то место, где они обрабатывались необходимо изменить.
  7. Используйте обертку над плагином rtwToCrypto.js. Код обертки:
    https://github.com/blade-runner/rutokenweb-to-plugin
    Подменяем методы Рутокен Web на необходимые нам.
    Таким образом все старые сигнатуры вашего кода сохраняются и ваш код работает, но теперь уже с новым другим плагином и всеми устройствами семейства Рутокен ЭЦП.
     

Список методов, переопределенных оберткой:

  • rtwIsTokenPresentAndOK;
  • rtwGetNumberOfContainers;
  • rtwGetContainerName;
  • rtwSign;
  • rtwGenKeyPair.

 Если в вашем коде есть использование других функций и какой-то код не срабатывает через обертку напишите на hotline@rutoken.ru или, если вы знаете, что нужно сделать, сделайте pull request в проект обертки.