Удостоверяющий центр КриптоПро отвечает за управление сертификатами на электронные подписи — выдачу, проверку, отзыв, приостановку, возобновление. В настоящее время поддерживается работа с плагинами CryptoPro или RuToken для браузера Chrome.
Часть действий выполняется на уровне сервера (это обмен данными между серверами "Первой Формы" и КриптоПро), эти действия автоматизируются с помощью смартов. Часть действий выполняется на уровне клиента (это обмен данными со считывающим устройством), эти действия автоматизированы с помощью JS API.
Процесс подписания ЭП с помощью КриптоПро
Если в настройках подписи на переходе включена опция ЭЦП, то в пользовательском интерфейсе в момент вынесения резолюции Подписать (или аналогичной по смыслу) открывается диалог с пользователем для считывания токена сертификата ЭП.
При неудачно завершенном диалоге (пользователь закрыл диалог) резолюция по подписи в "Первой Форме" не регистрируется.
При удачно завершенном диалоге в "Первой Форме" регистрируется вынесенная резолюция. Формируется ЭП (хеш файла) записывается в соответствии с настройками подписи: ЭП может добавляться в исходный файл (если этот файл имеет формат DOCX или PDF), а может храниться в базе данных отдельно от файла. Рядом с названием подписанного файла отображается кнопка "Посмотреть хеш".
При выполнении перехода можно подписать сразу несколько документов (комплект), в этом случае подпись генерируется отдельно для каждого документа.
При удалении исходных файлов удаляются и файлы с ЭП.
Порядок настройки
1. Установите и настройте Диспетчер удостоверяющего центра (см. Руководство по техподдержке).
2. Привяжите УЦ к "Первой Форме"
3. Настройте рабочие места пользователей
4. Настройте подписи с включенным признаком ЭЦП на нужных переходах маршрута
5. Автоматизируйте действия с сертификатами
1. Привязка удостоверяющего центра.
В интерфейсе администратора "Первой Формы" перейдите в раздел Система — КриптоПро — Удостоверяющие центры КриптоПро. Добавьте новый удостоверяющий центр или настройте созданный ранее. Подробнее о параметрах настройки можно узнать в Справочнике по интерфейсу администратора.
2. Привязка плагина.
В интерфейсе администратора "Первой Формы" перейдите в раздел Система — КриптоПро — Выбор плагина. Выберите один из доступных плагинов и нажмите кнопку Сохранить.
Настройка рабочего места пользователя
1. Если вы используете носители КриптоПро, на компьютер, с которого будет происходить подписание, установите следующее ПО:
•плагин КриптоПро (ссылка на сайт КриптоПро). Не забудьте его включить!
•КриптоПро CSP (ссылка на сайт КриптоПро)
•корневой сертификат удостоверяющего центра, выдавшего ЭП
2. Если вы используете носители РуТокен, на компьютер, с которого будет происходить подписание, установите следующее ПО:
•плагин Рутокен (ссылка на сайт РуТокен). Не забудьте его включить!
•корневой сертификат удостоверяющего центра, выдавшего ЭП
Настройка подписи в "Первой Форме"
1. В интерфейсе администратора откройте настройки категории, в которой вы хотите настроить подписание с помощью ЭП, и перейдите на вкладку Маршрут.
2. Откройте настройки перехода, на котором будет запрашиваться подпись, и перейдите на вкладку Подписи на переходе.
3. Добавьте подпись или используйте подпись, добавленную ранее. У подписи включите признак ЭЦП. Сохраните изменения, нажав значок в начале строки. Справа от колонки ЭЦП появится значок .
Включен признак запроса ЭП на переходе по маршруту
4. Нажмите на значок и в открывшемся окне выберите СКЗИ КриптоПро/РуТокен.
Выбор СКЗИ
5. Настройте перечень файлов, которые будут подписаны с помощью ЭП.
Нажмите кнопку Добавить.
6. В новой строке выберите ДП, в котором будет храниться файл для подписания, или смарт-выражение, которое будет возвращать коллекцию FileID.
Если выбрать Фиксированное значение, то можно подписывать только файлы, вложенные в ДП "Файл", а если выбрать Smart-выражение, то можно подписывать файлы, вложенные в ДП "Файл" или ДП "Таблица", а также файлы, вложенные в задачу. |
---|
7. Выберите ИНН юр.лица (вы можете выбрать фиксированное значение из выпадающего списка или указать смарт-выражение, которое будет возвращать ДП, ведущее к ИНН). Настройка позволяет определять юридическое лицо из сертификата сотрудника и не разрешать подписывать сертификатом одного юр.лица документы другого.
После выбора ИНН пользователь перед применением подписи получит ограниченный список сертификатов. Если сотруднику доступен только один сертификат, всплывающее окно с выбором не будет выводиться на экран, а доступный сертификат будет использоваться по умолчанию. |
---|
ИНН юр.лица
8. Если необходима проверка машиночитаемой доверенности (это доверенность в XML-формате с правом подписи сотрудника от лица компании), отметьте опцию "МЧД". Если опция "МЧД" активна, перед подписанием ЭЦП будет происходить проверка наличия МЧД у подписывающего пользователя. Если МЧД отсутствует, подпись не будет обработана.
9. Если отмечена опция "МЧД", задайте смарт-выражение для поиска машиночитаемой доверенности и файла электронной подписи SIG. В смарт-выражении должен возвращаться массив двух числовых значений : FileId XML и FileId SIG-файла.
10. Выберите вид подписи: открепленная или прикрепленная.
11. Один файл может быть подписан неограниченным количеством подписей. Для этого в каждой подписи надо выбрать один и тот же ДП типа файл в настройках ЭЦП. Для генерации файла с накоплением ЭЦП нужно в настройках всех подписей поставить галочку Соподпись, тогда каждая последующая будет прикрепляться к предыдущей.
Выдать сертификат
Последовательность действий:
Подготовить начальные данные (smart)
•Строку с данными о пользователе.
•Строку с данными о сертификате.
Форматы данных см здесь.
1. Зарегистрировать пользователя (smart)
На основе начальных данных из строки XML генерируется уникальный идентификатор пользователя (RA_User_ID).
2. Создать запрос на сертификат (js)
На основе строки с данными о пользователе (RequestString) генерируется зашифрованная строка для отправки в удостоверяющий центр (Request).
3. Выдать сертификат (smart)
На основе зашифрованной строки (Request) и уникального идентификатора пользователя (RA_User_ID) отправляется запрос в удостоверяющий центр. В ответ возвращается идентификатор запроса (RequestID) и сгенерированный сертификат (Certificate).
4. Записать сертификат (js)
Другие доступные действия
•Приостановить сертификат (smart)
•Отозвать сертификат (smart)
•Восстановить сертификат (smart)
•Сменить pin-код (smart) + (js)
Формат данных о сертификате и пользователе
Данные о пользователе
Данные о пользователе передаются в формате XML. Комбинация значений полей должна быть уникальна (чтобы обеспечить уникальность, можно в качестве одного из параметров использовать текущее время).
В общем случае структура XML включает секции From (содержит исходные значения) и To (содержит целевые значения). Если выполняется первоначальное создание сертификата, секция From может опускаться. Если выполняется изменение данных, должны присутствовать обе секции.
Данные о сертификате
Данные о сертификате передаются в УЦ КриптоПро в следующем формате
CryptoPro CA - Issue certificate
CryptoPro CA - new or update user
CryptoPro CA - pause certificate
CryptoPro CA - resume certificate
CryptoPro CA - revoke certificate
Метод |
Что делает |
Параметры |
Вызов |
|
---|---|---|---|---|
tcCryptoLogic.newRequest |
Создает запрос на сертификат |
Номер задачи, ID ДП, в котором записана строка запроса, ID ДП, в котором записан запрос после обработки сервером КриптоПро Строка формата JSON, вида {extParamsId:{ContainerName: 'Container_EP_ID'}}, где Container_EP_ID — это ID ДП, в котором записано название носителя |
tcCryptoLogic.newRequest(window.taskId, RequestString_EP_ID, Request_EP_ID, {extParamsId:{ContainerName: 'Container_EP_ID'}}) где RequestString_EP_ID — ID ДП, в котором записана строка запроса, Request_EP_ID — ID ДП, в котором записан запрос, Container_EP_ID — ID ДП, в котором записано название носителя.
|
|
tcCryptoLogic.installCertificate |
Записывает сертификат на носитель |
Номер задачи, ID ДП, в котором записан сертификат CryptoPro |
tcCryptoLogic.installCertificate(window.taskId, Certificate_EP_ID).then(function (response) { $('#stepBtnUnderTaskText1312').click(); $('#ctl00_body > div.sweet-alert.showSweetAlert.visible > div.sa-button-container > div > button').click(); }, function (ex) { dialogs.error("Текст сообщения об ошибке"); }) где Certificate_EP_ID — ID ДП, в который записан сертификат, #stepBtnUnderTaskText1312 — ID смарт-кнопки, на которую настроен вызов функции |
|
tcCryptoLogic.changePin |
Сменить пин-код |
ID ДП, содержащего отпечаток подписи Thumbprint |
При работе с плагином CryptoPro: tcCryptoLogic.changePin(Thumbprint_EP_ID) где Thumbprint_EP_ID — ID ДП, содержащего отпечаток подписи При работе с плагином RuToken: tcCryptoLogic.changePin() |
Пример работы с сертификатом КриптоПро
Действия с сертификатами выполняются вручную, с помощью настраиваемых кнопок.
Подготовка
•Создать Удостоверяющий центр КриптоПро (его ID используется в настройках смарт-действий).
•Создать две категории: категория "Пользователи" для привязки сертификатов УЦ КриптоПро к пользователям "Первой Формы" и категория "Сертификаты" для выполнения действий над этими сертификатами.
Плагин CryptoPro для браузера установлен и включен
Категория "Пользователи"
Категория содержит следующие ДП:
ДП |
Тип |
Описание |
ID ДП в данном примере |
---|---|---|---|
UserId |
Текст |
GUID пользователя в УЦ КриптоПро |
11 |
Xml |
Текст |
Данные о пользователе |
22 |
Эти ДП не отображаются при создании новой задачи.
Категория "Сертификаты"
Категория содержит следующие ДП:
ДП |
Тип |
Описание |
ID ДП в данном примере |
---|---|---|---|
RequestString |
Текст |
Строка с запросом. В ней могут быть указаны данные о пользователе (заполнять необязательно) |
33 |
Request |
Текст |
Строка запроса сертификата в УЦ КриптоПро |
44 |
RequestId |
Текст |
GUID запроса на сертификат в УЦ КриптоПро |
55 |
UserId |
Текст |
GUID пользователя в УЦ КриптоПро (полученный при регистрации пользователя, см. выше категорию "Сертификаты") |
66 |
Certificate |
Текст |
Полученный сертификат |
77 |
Container |
Текст |
Название контейнера, хранящего сертификат |
88 |
Эти ДП не отображаются при создании новой задачи.
Автоматизация в категории "Пользователи"
Кнопка Зарегистрировать
Смарт-пакет: "Зарегистрировать пользователя" с действием "CryptoPro CA — new or update user"
Смарт-пакет для регистрации пользователя в УЦ КриптоПро
Автоматизация в категории "Сертификаты"
Кнопка Создать запрос на сертификат
Кнопка Выдать сертификат
Смарт-пакет: "Выдать сертификат" с действием "CryptoPro CA — Issue certificate"
Смарт-пакет для выдачи сертификата
Смарт-действие для выпуска сертификата
В смарт-действии Issue certificate заполняются ДП, поэтому после него нужно обновить задачу и обновить карточку задачи.
Смарт-действия для обновления задачи после выпуска сертификата
Кнопка Записать сертификат
Работа в пользовательском режиме
В категории "Пользователи"
1. В ДП Xml запишите строку с данными о пользователе по образцу:
<ProfileAttributesChange><To><Attribute Oid="2.5.4.3" Value="ФИО_пользователя"/></To></ProfileAttributesChange>
(может использоваться ФИО пользователя, его ID в "Первой Форме" или другая информация).
2. Нажмите кнопку Зарегистрировать. По xml-данным пользователя будет выполнена регистрация в УЦ КриптоПро — заполнится ДП UserId, необходимый для дальнейшей работы с сертификатами.
В категории "Сертификаты"
1. Скопируйте в ДП UserId значение, полученное при регистрации (см. выше п.2 в категории "Пользователи").
2. Нажмите кнопку Создать запрос на сертификат. В ДП Request будет записана строка запроса сертификата.
3. Нажмите кнопку Выдать сертификат и следуйте указаниям программы. По окончании в ДП RequestId и Certificate будут записаны данные.
4. Нажмите кнопку Записать сертификат. Сгенерированные данные будут переданы в УЦ КриптоПро.
Другие действия
Если нужно автоматизировать процессы приостановки, отзыва и возобновления сертификатов, а также смены pin-кода, вы можете создать кнопки, аналогичные кнопке Выдать сертификат, но с соответствующими смарт-действиями или js-функциями.
Ошибки при работе с УЦ КриптоПро
1. Ошибки, возникающие при работе УЦ КриптоПро, можно посмотреть в журнале.
Журнал ошибок УЦ КриптоПро
2. Алгоритм создания подписи и алгоритм ключа проверки подписи должны быть одинаковыми. Рекомендуется использовать ГОСТ Р 34.10-2012. Если невозможно использовать одинаковые алгоритмы, необходимо отключить контроль соответствия:
В реестре Windows в раздел HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\CC2 нужно добавить параметр DisableGostCspConformityCheck типа DWORD со значением, отличным от нуля. При эксплуатации УЦ для выпуска квалифицированных подписей этот контроль должен быть включен.
Полезные ссылки