Электронная цифровая подпись на сайте при помощи КриптоПро ЭЦП Browser plug-in / Хабр

Электронная цифровая подпись на сайте при помощи КриптоПро ЭЦП Browser plug-in / Хабр ЭЦП

Что такое криптопро браузер плагин 2.0

Для организации электронного документооборота пользователю потребуются три инструмента, функционирующие в связке друг с другом: криптопровайдер, сертификат ЭЦП (и закрытый ключ к нему) и правильно настроенное рабочее место. Работа с электронной подписью возможна только при совокупности всех инструментов, в противном случае система будет выдавать ошибку, и любые операции с ЭЦП станут недоступными.

Настройка рабочего места предполагает следующие действия:

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

КриптоПро ЭЦП Browser plug-in — дополнительный компонент, который интегрируется с СКЗИ и расширяет возможности веб-обозревателя, позволяя реализовывать функции КЭП в интернете. Если говорить простыми словами, плагин разрешает держателям ключей заверять файлы в интернет-ресурсах, а сайтам помогает проверять ЭП и расшифровывать полученную информацию.

Плагин криптопро эцп browser plug in: что это и зачем он нужен

Владельцам бизнеса придется неоднократно использовать электронную подпись для заверения документов: при заключении договора с оператором фискальных данных, постановке ККТ на учет в ФНС, при перерегистрации кассы после замены ФН и т.д.

Генерирование подписи через Crypto-Pro CSP возможно только после загрузки КриптоПро Browser plugin: этот модуль расширяет возможности СКЗИ и позволяет выполнять все задачи, связанные с формированием и проверкой ЭЦП.

С помощью плагина можно визировать:

  • электронные документы;
  • информацию web-формы;
  • файлы с ПК пользователя;
  • сообщения с текстовым содержанием.

Преимущественно этот модуль используется в сферах, где требуется повышенная защита информации, а именно:

  • на клиентских, корпоративных и партнерских порталах;
  • на торговых онлайн-площадках;
  • в системах онлайн-банкинга;
  • при отправке документов в ФНС и другие контролирующие органы;
  • в электронных офисах и т.д.

Программный модуль создает и проверяет обычные и усиленные ЭП, автоматически решая сразу несколько задач:

  • подтверждение точной даты и времени создания, подлинности документа и действительности ЭЦП;
  • предотвращение изменений и дополнений файла без ведома владельца ключа;
  • архивное хранение документации.

Например, при регистрации онлайн-кассы в ФНС подача заявления, подписанного КЭП с помощью КриптоПро ЭЦП Browser Plugin, подтверждает, что:

  • подпись была поставлена владельцем ключа в указанный момент времени;
  • сертификат ключа был действителен на момент подачи заявления.

ЭП или прикрепляется к заверяемым документам (присоединенная КЭП), или формируется отдельно (отделенная КЭП).

Формирование подписи осуществляется на стороне клиента, а не на стороне сервера криптопровайдера, поэтому ключ никуда не передается.

Архивное хранение

Использование усовершенствованной подписи является необходимым условием архивного хранения электронных документов, удостоверенных ЭЦП.

В формате усовершенствованной подписи вся необходимая информация для проверки подлинности ЭЦП находится в реквизитах документа. Для сохранения юридической значимости электронных документов при архивном хранении остаётся только обеспечить их целостность организационно-техническими мерами.

Доказательство момента подписи документа и действительности сертификата ключа подписи на этот момент

Согласно статье 4 ФЗ «Об электронной цифровой подписи», ЭЦП признаётся равнозначной собственноручной подписи в документе на бумажном носителе при условии, что сертификат ключа подписи, относящийся к этой ЭЦП, не утратил силу (действует) на момент проверки или на момент подписания электронного документа при наличии доказательств, определяющих момент подписания.

Формат усовершенствованной подписи предусматривает обязательное включение в реквизиты подписанного документа доказательства момента создания подписи и доказательства действительности сертификата в момент создания подписи.

Для доказательства момента подписи используются штампы времени, соответствующие международной рекомендации RFC 3161 «Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)».

Доказательства действительности сертификата в момент подписи обеспечиваются вложением в реквизиты документа цепочки сертификатов до доверенного УЦ и OCSP-ответов. На эти доказательства также получается штамп времени, подтверждающий их целостность в момент проверки.

Как установить криптопро браузер плагин 2.0

После сохранения дистрибутива cadesplugin.exe запустите инсталляцию ПО от имени администратора. Если утилита запросит у вас разрешение внести изменения на компьютере, нажмите кнопку «Да». По окончании процедуры появится окно, уведомляющее об успешной установке модуля, — кликните по клавише «Ок» и перезагрузите ПК. На этом процедура окончена, а plug-in успешно добавлен в интернет-браузер.

Для инсталляции в Apple MacOS выполните следующие шаги:

Процедура длится 5-10 минут. По завершении закройте окно установщика кнопкой «Ок», настройте веб-обозреватель и проверьте корректность работы плагина.

После инсталляции Browser Plugin рекомендуется добавить сайты и страницы личных кабинетов, с которыми вы сотрудничаете на постоянной основе, в перечень надежных ресурсов:

  • через меню «Пуск» найдите программу CryptoPro CSP;
  • зайдите в раздел настроек ЭЦП-плагина;
  • на странице «Доверенные узлы» добавьте адреса веб-площадок, которые принимают от вас документы;
  • сохраните измененные настройки.

Для заданных узлов Browser Plug-in не будет запрашивать подтверждения пользователя при открытии хранилища сертификатов и создании ЭП. Доступ к ключам осуществляется автоматически.

Во избежание ошибок в работе плагина, следует учесть несколько важных нюансов:

  • не забывайте перезагрузить ПК после установки модуля;
  • инсталлируйте plug-in на «чистый» браузер, предварительно удалив историю;
  • если в ходе установки браузер требует дать разрешение на добавление нового ПО, подтвердите свое согласие (эта операция не несет опасности для компьютера и хранящихся на нем данных).

Если все сделано правильно, но браузер по-прежнему блокирует все действия с КЭП, обратитесь в службу поддержки или задайте вопрос на тематическом форуме компании.

Криптопро эцп browser plug in версии 2.0

С 1 января 2022 года вступил в действие новый стандарт — ГОСТ 34.10/11-2022, регламентирующий процессы генерации и проверки ЭЦП. Теперь удостоверяющие центры обязаны выдавать сертификаты только по новому стандарту 2022.

На сайте криптопровайдера доступны для скачивания 2 версии программного модуля — v.1.5 и v.2.0.

Предпринимателям, которые будут переходить на онлайн-ККТ в этом году, необходимо установить v.2.0. В отличие от v.1.5, КриптоПро ЭЦП Browser plug in версии 2.0 уже адаптирован для работы по новому ГОСТу, но только при условии использования ПО КриптоПро CSP не ниже 4.0.

Согласно письму ФСБ РФ №149/7/6-363, все сертификаты, выпущенные по старому ГОСТу Р 34.10-2001, можно применять до окончания их сроков действия.

Например, если вы купили ЭЦП в 2022 году и срок ее действия еще не истек, можно использовать ее и дальше. Также разрешается не обновлять установленный ранее плагин v. 1.5.

Криптопро эцп browser plug-in v.1.5

  • В рамках данной версии осуществляется только исправление ошибок, развитие не осуществляется.
  • Не поддерживает работу с алгоритмами ГОСТ Р 34.10/11-2022.
  • Для Microsoft Windows совместима с КриптоПро CSP версии 3.6 R2 и выше, для других ОС – с КриптоПро CSP версии 3.9 и выше.
  • Компоненты КриптоПро TSP Client 1.5 и КриптоПро OCSP Client 1.5, входящие в данную версию, принимают лицензию от версий 1.0.
  • Минимальная поддерживаемая версия Microsoft Windows – Windows 2000.

Криптопро эцп browser plug-in v.2.0

  • Поддерживает работу с алгоритмами ГОСТ Р 34.10/11-2022 (при использовании с КриптоПро CSP 4.0 и выше).
  • Для Microsoft Windows совместима с КриптоПро CSP версии 3.6 R4 и выше, для других ОС – с КриптоПро CSP версии 4.0 и выше.
  • Компоненты КриптоПро TSP Client 2.0 и КриптоПро OCSP Client 2.0, входящие в данную версию, не принимают лицензию от версий 1.x.
  • Минимальная поддерживаемая версия Microsoft Windows – Windows XP.
  • Для работы в Firefox версии 52 и выше требуется дополнительно установить расширение для браузера.

Настройка криптопро плагин 2.0 для разных браузеров

Алгоритм настройки программного компонента зависит от веб-браузера. Internet Explorer «находит» КриптоПро плагин 2.0 по умолчанию, поэтому не требует дополнительных манипуляций.

Настройки браузера для криптопро browser plugin

Дальнейший порядок действий зависит от браузера. Для Internet Explorer не нужны дополнительные настройки. Сразу после инсталляции и перезагрузки компьютера воспользуйтесь сервисом проверки плагина и оцените корректность установки. Для этого в открывшейся форме разрешите операцию нажатием кнопки «Да».

Если все выполнено верно, откроется окно с указанием версии загруженного плагина и используемого СКЗИ.

Процедура проверки корректности обязательна для любого браузера. Без нее вы не сможете понять, готов модуль для формирования электронной подписи или нет.

Плагин рутокен 2.0

Основной недостаток десктопного криптопровайдера КриптоПро CSP — жесткая привязка к рабочему месту. Владелец КЭП может подписывать документы только на том ПК, где установлена лицензия СКЗИ. Такая проблема успешно решается с помощью Рутокен 2.0 от компании «Актив-Софт».

Это физический носитель (флешка) для хранения сертификатов, генерации ЭП, шифрования документов и двухфакторной аутентификации пользователей. В отличие от большинства других токенов, Рутокен 2.0 уже содержит в себе полноценное СКЗИ и не требует установки дополнительного криптопровайдера на рабочее место.

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

Проверка подлинности эцп без сетевых обращений

Вложение в реквизиты документа всех доказательств, необходимых для проверки подлинности ЭЦП, обеспечивает возможность оффлайн-проверки подлинности ЭЦП. Доступ к репозиторию сертификатов, службам OCSP и службам штампов времени необходим только в момент создания подписи.

Распространение и установка файлов криптопро эцп browser plug-in

Для функционирования веб-страниц, использующих КриптоПро ЭЦП Browser plug-in, он должен быть установлен на стороне клиента.

1. Скачайте программу установки и запустите исполняемый файл CadesPlugIn.exe.

Электронная цифровая подпись на сайте при помощи КриптоПро ЭЦП Browser plug-in / Хабр

Электронная цифровая подпись на сайте при помощи КриптоПро ЭЦП Browser plug-in / Хабр

Электронная цифровая подпись на сайте при помощи КриптоПро ЭЦП Browser plug-in / Хабр

Электронная цифровая подпись на сайте при помощи КриптоПро ЭЦП Browser plug-in / Хабр

2. Для браузера Chrome, запустите Chrome (Chromium) и дождитесь оповещения об установленном расширении «CryptoPro Extension for CAdES Browser Plug-in». Включите это расширение. Или зайдите по ссылке и установите расширение. Для браузеров Opera и Яндекс.Браузер расширение также доступно по ссылке. Для браузера Firefox версии 52 и выше требуется скачать расширение с сайта и установить в браузер самостоятельно.

Электронная цифровая подпись на сайте при помощи КриптоПро ЭЦП Browser plug-in / Хабр

Электронная цифровая подпись на сайте при помощи КриптоПро ЭЦП Browser plug-in / Хабр

3. Перезапустите браузер. Если установка прошла корректно, на странице появится информация о том, что плагин загружен.

Электронная цифровая подпись на сайте при помощи КриптоПро ЭЦП Browser plug-in / Хабр

1. Для работы плагина требуется установленный КриптоПро CSP версии 4.0 и выше. Дистрибутив и инструкцию по установке можно получить по

ссылке

. Для работы плагина обязательна установка пакетa cprocsp-rdr-gui-gtk и отсутствие установленного пакета cprocsp-rdr-gui.

2. Скачайте и распакуйте архив cades_linux_ia32.zip или cades_linux_amd64.zip

3. Установите пакеты cprocsp-pki-2.0.0-cades.rpm cprocsp-pki-2.0.0-plugin из архива. В дистрибутивах семейства Debian необходимо конвертировать пакеты из формата rpm в deb. Для этого можно использовать утилиту alien. При использовании некоторых 64 битных версий КриптоПро CSP 4.0 для rpm дистрибутивов потребуется указать флаг —nodeps.

4. Для браузера Chrome(Chromium) расширение для работы плагина устанавливается автоматически при перезапуске браузера. Ручная установка возможна если перейти по ссылке. Для браузеров Opera и Яндекс.Браузер расширение доступно по ссылке

5. Перезапустите браузер.

Поддерживаемые браузеры: FireFox, Opera версии 35 и выше, Google Chrome, Chromium и Яндекс.Браузер.

1. Перейдите на

демо-страницу

с примером подписи CAdES BES, CAdES X LONG или примером подписи XML.

2. Следуя указаниям демо-страницы, выберите сертификат подписи, введите данные для проверки работы плагина и нажмите «Подписать».

Электронная цифровая подпись на сайте при помощи КриптоПро ЭЦП Browser plug-in / Хабр

Дополнительную информацию можно получить на сайте производителя.

Для активации объектов КриптоПро ЭЦП Browser plug-in следует подключить к странице файл cadesplugin_api.js:

Пример создания объектов КриптоПро ЭЦП Browser plug-in

С какими браузерами совместим криптопро эцп browser plugin

Плагин можно применять на ОС Microsoft Windows, Linux, Apple iOS и MacOS. Он совместим с любым интернет-обозревателем, поддерживающим код Java Script:

  • Internet Explorer.
  • Yandex.
  • Mozilla Firefox.
  • Google Chrome.
  • Опера.
  • Safari.
  • Другие браузеры с поддержкой NPAPI-плагинов.

Состав

Стандарт применения усовершенствованной электронной цифровой подписи включает в себя:

Усовершенствованная подпись крипто-про. новое средство обеспечения юридической значимости электронных документов

КриптоПро PKI - ЗУБР 2007Компания КРИПТО-ПРО предлагает Стандарт применения усовершенствованной электронной цифровой подписи. Опыт КРИПТО-ПРО – ведущей российской компании в области технологии ЭЦП – свидетельствует, что при использовании «классической» ЭЦП в юридически значимом электронном документообороте, в случае возникновения спора достаточно трудно, а подчас и невозможно, доказать подлинность ЭЦП и момент подписи (создания) ЭЦП. Эти трудности могут привести к тому, что арбитр не примет электронный документ в качестве письменного доказательства. Данные трудности порождаются рядом проблем, присущих «классической» ЭЦП, а именно:

— нет доказательства момента подписи;- трудность доказывания статуса сертификата открытого ключа подписи на момент подписи (или действителен, или аннулирован, или приостановлен).

Предлагаемый КРИПТО-ПРО Стандарт применения усовершенствованной подписи позволяет решить все основные трудности, связанные с применением ЭЦП, и обеспечить участников электронного документооборота всей необходимой доказательной базой (причем собранной в самой ЭЦП в качестве реквизитов электронного документа), связанной с установлением момента подписи и статуса сертификата открытого ключа подписи на момент подписи.

Формат усовершенствованной подписи основан на европейском стандарте CAdES (ETSI TS 101 733). Версия этого стандарта опубликована в виде RFC 5126 «CMS Advanced Electronic Signatures (CAdES)». Новый формат подписи решает описанные выше и множество других потенциальных проблем, обеспечивая:

Электронная цифровая подпись на сайте при помощи криптопро эцп browser plug-in

В данной статье рассмотрим использование электронно-цифровой подписи на сайте.

Что необходимо, чтобы человек смог использовать электронно-цифровую подпись на сайте?

1) СКЗИ (средство криптографической защиты информации)
Мой опыт работы показывает, что порядка 90% использует КриптоПро CSP (скачать), который в явном или неявном виде продвигают удостоверяющие центры. Порядка 10% VipNet CSP (), который можно использовать бесплатно. С остальными СКЗИ на практике не встречался.
2) КриптоПро ЭЦП Browser plug-in (страница плагина).
3) Установленная подпись (хотя бы одна).

Проверка возможности осуществления подписи
javascript ( jquery)

1) Попытка создать объект cades.
Нужно сделать примечание, что тут и далее, будет деление на браузер с ActiveX(читай IE) и остальные.
Проверка будет осуществляться:

return ('ActiveXObject' in window);

для ActiveX:

try {
    store = new ActiveXObject('CAdESCOM.store');
    status = true;
} catch (e) {
    status = false;
}

Для остальных:

if (navigator.mimeTypes['application/x-cades']) {
    status = true;
} else {
    status = false;
}

Если проверка прошла неудачно, то уведомляем об этом пользователя.

Стоит иметь ввиду, что после обновления хрома до версии 42 (спасибо

статье

за информацию) нужно включить:

chrome://flags/#enable-npapi

Следующая проверка — а разрешен ли плагин для запуска (не для IE проверка)?

try {
    store = objSign.CreateObject('CAPICOM.store');
    status = true;
} catch (e) {
    status = false;
}

Где objSign:

objSign = $('<object/>', {
    'id': 'cadesplugin',
    'type': 'application/x-cades',
    'css': {
        'visibility': 'hidden',
        'height': '0px',
        'width': '0px',
        'position': 'absolute'
    }
}).appendTo('body').get(0);

Проверяем на СКЗИ путем попытки открыть хранилище.

try {
    store.Open();
    status = true;
} catch (e) {
    status = false;
}

Проверяем на существование сертификатов в хранилище:

if ('Certificates' in store) {
    certs = store.Certificates;
}

И их количество (бывает, что Certificates есть, но пуст, что нам тоже не подойдет):

if (certs.Count) {
    status = true;
} else {
    status = false;
}

Первый шаг сделали — проверили возможность подписания чего-либо.

Выбор электронной цифровой подписи

У клиента может быть установлено несколько сертификатов. Сертификаты могут быть от разных удостоверяющих центров (УЦ), выданными быть разным людям, с разными датами выдачами, поэтому надо предоставить выбор, каким именно он хочется воспользоваться.

1) Группируем по удостоверяющим центрам
Информация об удостоверяющем центре хранится в сертификате.

certs.Item(i).GetInfo(1)
где certs — сертификаты из хранилища, см выше
i — порядковый номер сертификата от 1 (обратите внимание) до certs.Count.
Обратите внимание, что, в случае «кривых» сертификатов, вернуться может и undefined, имеет смысл сделать один дефолтный УЦ для таких случаев.

Теперь мы знаем список УЦ, услугами которых воспользовался клиент.
Запоминаем их и выведем через optgroup.
Сам text у option будет таким:

cert.GetInfo(6)   ' ('   formatDate(cert.ValidFromDate)   ' - '   formatDate(cert.ValidToDate)   ')'

в

cert.GetInfo(6)

— кому выдан сертификат

в

ValidFromDate

— с какого срока сертификат начал/начнет действие

в

ValidToDate

— соответственно, до какого срока

Ну и форматирование даты стандартное:

function formatDate(d) {
    try {
        d = new Date(d);
        return ('0'   d.getDate()).slice(-2)   '.'   ('0'   (d.getMonth()   1)).slice(-2)   '.'   d.getFullYear();
    } catch (e) {
        return '';
    }
}

Еще можно подсветить option.

Зеленым — для работоспособных сертификатов, красным — нет.

Информацию можно получить при помощи самого сертификата.

try {
    return cert.IsValid().Result;
} catch (e) {
    return false;
}

Стоит отметить, что сама по себе данная проверка имеет малую ценность, ибо все причины не может отсечь.

Но самые базовые, например, проверка даты — проверяет.

В value у option запишем отпечаток cert.Thumbprint.
Можно порядковый номер записать, можно другие данные — на ваше усмотрение.

Подписание
Ну и, собственно, самый главный шаг, к которому мы стремились — подписание.

1) Находим выбранный сертификат.
Для нашего примера:

certs.Find(0, thumbprint).Item(1)

0

— означает, что мы ищем по отпечатку

1

— что используем первый результат выборки (по факту единственный)

2) Подписываем:

if (isActiveX()) {
    var CPSigner = new ActiveXObject('CAdESCOM.CPSigner');
} else {
    var CPSigner = objSign.CreateObject('CAdESCOM.CPSigner');
}
CPSigner.Certificate = cert;
if (isActiveX()) {
    var SignedData = new ActiveXObject('CAdESCOM.CadesSignedData');
} else {
    var SignedData = objSign.CreateObject('CAdESCOM.CadesSignedData');
}
SignedData.Content = text;
return SignedData.SignCades(CPSigner, 1, false);

где cert — сертификат, при помощи которого подписываем
text — собственно, что подписываем
Ну а в return возвращается подписанное сообщение.

p.s. По максимуму код постарался вычистить от специфики проекта. Если кому-то этот материал пригодится и будет интересно — напишу и серверную часть. Проверка подписанного сообщения (с цепочкой и без), проверка сертификата (ocsp и без), использования tsp и т.д.

Оцените статью
ЭЦП64
Добавить комментарий