Процесс подписание документа

Добрый день. Можете расписать процесс подписание какого-нибудь домумента.

Прочитать сертификат и приватный ключ в сертификате RSA256_xxx.p12 получилось.

Теперь дальше какой процесс, как нужно и чем подписывать файл?

Добрый вечер,

Если с точки зрения разработчика, то Вам следует использовать NCALayer, документация по нему в SDK НУЦ, инструкция как его получить тут: https://pki.gov.kz/developers/ Так же можно воспользоваться интерактивной документацией KAZTOKEN mobile https://kaztoken.kz/mobile-docs/, так как он повторяет API NCALayer.

Если с точки зрения пользователя, то вот два очень простых варианта, которые позволяют подписывать любые файлы:

Добрый день,

Спасибо вас за ответы. Наверное Я не правильно задал вопрос. Я хотел узнать, как подписывать документ с ЭЦП? Если эта система построена не на Windows. А ОС Линукс. И нет графического интерфейса.

Второй вопрос, сам сертификат подписи состоит из двух частей: сертификат и приватный ключ? Эти данные Я смог прочитать. А как дальше? Как мне подписывать?

Добрый день!

Подскажите, какой сценарий ближе вам:

  1. Пользователь(клиент), заходя на ваш сайт, подписывает нужный документ своим ключом RSA…p12.
  2. На стороне сервиса производится подпись документа с помощью ключа сотрудника GOSTKNCA…p12

В 1) случае необходимо использовать только NCALayer. Во 2) - есть несколько вариантов: NCALayer, php-библиотека (kalkancrypt.so), с-библиотека (libkalkancryptwr-64.so).
Для каждой из перечисленных в SDK есть пример реализации.

Опишу кратко подпись документа с помощью php-библиотеки:

KalkanCrypt_Init(); //Инициализация библиотеки
KalkanCrypt_LoadKeyStore($storage, $pass,$path,""); // Подгрузка в память ключа
$flags_sign = $KC_SIGN_CMS + $KC_OUT_PEM + $KC_IN_FILE; // флаг для формирования подписи. Будет изменяться в зависимости от нужного формата подписи. 
$inData = "/home/user/example.pdf"; // Путь к файлу, который подписываем
KalkanCrypt_SignData("", $flags_sign, $inData, $outSign); //Подпись документа

Спасибо за прекрасные ответы, теперь становится понятно.

Будет сервис для автоматизации подписываения документа сотруником компании, скорее всего будет директор компании и доверенное лицо от компании.

Как понял, нам подходит вариант 2.

  1. Как проверить валидность подписанных данных?
  2. Что такое CMS?

Необходимо воспользоваться аналогичными методами. В примере SDK 2.0\C\Linux\PHP\example\test.php
case 12: описан метод проверки ликвидности сертификата.
case 4: описан метод проверки подписи CMS.

Вот несколько ссылок с хабра, описывающих стандарт CMS:
Форматы электронной подписи
Структура PKCS7-файла

Имейте в виду что передавать закрытые ключи запрещено в соответствии с пунктом 2, статьи 10, главы 3 “Закона об ЭЦП”:

Закрытые ключи электронной цифровой подписи не могут быть переданы другим лицам.

Об этом даже новость на https://pki.gov.kz/news/ есть:

Казахстанцам грозит штраф в размере 400 тысяч тенге за незаконную передачу ЭЦП третьим лицам. Об этом предупредили в Министерстве цифрового развития, инноваций и аэрокосмической промышленности, передает Tengrinews.kz со ссылкой на Almaty.tv.

Так что размещать закрытые ключи сотрудников на сервере - противозаконно.

Спасибо за прекрасный ответ. Прочту закон и вернусь к этому вопросу.

Добрый день, коллеги.
Я хочу уточнить, как можно получить SDK? После того как напишем и отправим вам оригиналы документов акта приема и заявления?

Добрый день.
Сначала необходимо получить подтверждение по электронной почте. Затем пройдите по ссылке Скачать SDK. В поле введете адрес электронной почты, указанной в Акте. Затем на почту придет ссылка на скачивание

У меня есть вопрос, в акте приема передачи, в поле получил сразу же подписать, поставить печать и отправить вам или как?

Вопросы касательно получения SDK лучше написать на info@pki.gov.kz, иначе вам придется ждать пока мы передадим им ваш вопрос и потом ждать цепочку ответа. Вопросы касательно юридической стороны PKI также лучше писать на info@pki.gov.kz.