Подпись произвольных файлов ЭЦП в ОС РОСА с помощью СКЗИ Крипто-ПРО
Применимость и сертификаты
В инструкции описана последовательность действий, необходимая для электронной подписи файлов в соответствии с ГОСТ Р 34.10-2012 с использованием электронного ключа рутокен и программного пакета КриптоПро. Пример указан для 64-разрядной архитектуры AMD64, версии ROSA Fresh R7 (RED X2). Предполагается, что установка КриптоПро произведена согласно Инструкции и установлена вся цепочка сертификатов: сертификат пользователя (.cert/.p7b), промежуточные сертификаты (.cert/.p7b), сертификат корневого удостоверяющего центра (.cert/.p7b) и список отозванных сертификатов (.crl))
Пример пользовательского сертификата:
Пример корневого сертификата:
Подписывание файла документа
Для подписания документа в СКЗИ КриптоПро CSP существует утилита cryptcp. Рассмотрим два варианта ее применения для подписи файла документа:
/opt/cprocsp/bin/<amd64 или ia32>/cryptcp -sign <критерии_поиска_сертификата> -der <указать_директорию_файла/название_файла>
После выполнения вышеуказанной команды в папке, из которой была выполнена команда, появится файл «название_файла.sig». Он в себя включает как подписываемый файл, так и подпись.
/opt/cprocsp/bin/<amd64 или ia32>/cryptcp -signf <критерии_поиска_сертификата> -der <указать_директорию_файла/название_файла>
После выполнения вышеуказанной команды в директории из которой была выполнена команда появится «файл название_файла.sgn». Данный файл содержит только подпись документа. При использовании такой подписи можно подписывать сразу несколько документов.
-der указывает на то, что на выходе будет сертификат в формате DER (по умлочанию Base64);
Пример подписывания документа:
В документации по КриптоПро в разделах 2.1 — 2.8 можно при необходимости узнать более подробную информацию. Критерии поиска сертификата — это индивидуальный параметр и его надо выбирать самостоятельно в зависимости от ситуации. Для удобства при выставлении критериев поиска сертификата можно воспользоваться командой
/opt/cprocsp/bin/<amd64 или ia32>/certmgr -list
и просмотреть сертификаты пользователя.
Проверка подписи документа
С помощью утилиты cryptcp можно произвести и проверку подписи.
Для проверки подписи в системе должен быть установлен корневой сертификат того же удостоверяющего центра что и в той системе, на которой производилась подпись.
Проверить подписанный файл, влючающий подпись можно командой:
/opt/cprocsp/bin/<amd64 или ia32>/cryptcp -verify <указать_папку_файла/название_файла>
Отдельную подпись файла или нескольких файлов можно проверить командой:
/opt/cprocsp/bin/<amd64 или ia32>/cryptcp -vsignf <указать_папку_файла/название_файла>
Пример проверки подписи вместе с сертификатом, которые находятся в принятом файле, и создания читаемой копии файла.
При необходимости проверки сертификата на ОС Windows, можно использовать ПО «КриптоАРМ Старт» (бесплатная версия).
Пример распечатки подписи:
Параметры подписи Статус Общий статус подписи: Подпись верна Статус проверки математической корректности: Подпись верна Статус проверки сертификата: Сертификат действителен
Сертификат подписи Информация о сертификате Параметры сертификата: Версия: 3 Серийный номер: 1200108BA3D91F5C0D6DAD363C000000108BA3 Издатель: CRYPTO-PRO Test Center 2 Действителен с: 09.05.2016 13:29:56 UTC Действителен до: 09.08.2016 13:39:56 UTC Владелец: Oleg Открытый ключ: Алгоритм открытого ключа: ГОСТ Р 34.10-2001 Расширения сертификата: Использование ключа (KU), критическое расширение: Значение: Цифровая подпись, Неотрекаемость, Шифрование ключей, Шифрование данных (f0) Улучшенный ключ (EKU): Значение: Проверка подлинности клиента Точка распространения СОС (CDP): Значение: URL: http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO%20Test%20Center%202.crl Доступ к информации о ЦС: Значение: Метод доступа: Доступ к информации издателей http://testca.cryptopro.ru/CertEnroll/test-ca-2014_CRYPTO-PRO%20Test%20Center%202.crt Метод доступа: Доступ к службе Актуальных статусов сертификатов http://testca.cryptopro.ru/ocsp/ocsp.srf Алгоритм подписи: ГОСТ Р 34.10-2001/ГОСТ Р 34.11-94 Атрибуты Тип содержимого: PKCS#7 - data Время подписания: 22.06.2016 07:08:38 UTC