PKI

Предупреждение

Методы PKI работают только с ГОСТ-криптографией.

В PKI используются форматы ЭП, приведенные в таблице ниже. Номер формата ЭП из таблицы соответствует значению поля sigtype.

Форматы ЭП

Формат ЭП

1

CAdES-BES

2

CAdES-X Long Type 1

3

CAdES-T

POST /pki/sign

Подсказка

Правила формирования запросов к ноде приведены в разделе Как использовать REST API.

Метод формирует отсоединённую ЭП для данных, передаваемых в запросе. В данном запросе inputData - это данные для формирования ЭП в виде массива байт в кодировке Base64, keystoreAlias - это наименование ключевого контейнера закрытого ключа ЭП. Также необходимо указать пароль от ключевого контейнера в параметре password.

Пример запроса

{
"inputData" : "SGVsbG8gd29ybGQh",
"keystoreAlias" : "key1",
"password" : "password",
"sigType" : "CAdES_X_Long_Type_1",
}

Пример ответа

{
  "signature" : "c2RmZ3NkZmZoZ2ZkZ2hmZGpkZ2ZoamhnZmtqaGdmamtkZmdoZmdkc2doZmQjsndjfvnksdnjfn="
 }

GET ​/pki​/keystoreAliases

Метод возвращает список всех keystore-алиасов на ГОСТ-криптографии.

Пример ответа

{
 [
  "3Mq9crNkTFf8oRPyisgtf4TjBvZxo4BL2ax",
  "e19a135e-11f7-4f0c-9109-a3d1c09812e3"
 ]
 }

POST /pki/verify

Метод выполняет проверку УКЭП для данных, переданных в запросе. Поле extendedKeyUsageList является опциональным и может содержать массив значений OID (Объектный идентификатор) для определения области действия сертификата. Проверку сертификата может осуществлять любая нода, имеющая параметры запроса.

Пример запроса

{
 "inputData" : "SGVsbG8gd29ybGQh",
 "signature" : "c2RmZ3NkZmZoZ2ZkZ2hmZGpkZ2ZoamhnZmtqaGdmamtkZmdoZmdkc2doZmQ=",
 "sigType" : "CAdES_X_Long_Type_1",
 "extendedKeyUsageList": [
 "1.2.643.7.1.1.1.1",
 "1.2.643.2.2.35.2"
 ]
 }

Пример ответа

{
 "sigStatus" : "true"
 }

Работа с методом POST /pki/verify

Нода имеет возможность проверять УКЭП (Усиленная квалифицированная электронная подпись), используя метод API Post /pki/verify. Для корректности работы метода API Post /pki/verify необходимо установить корневой сертификат на ноду. Корневой сертификат УЦ однозначно идентифицирует центр сертификации и является основанием в цепочке доверия.

Как установить корневой сертификат на ноду

Корневой сертификат устанавливается в следующую папку со средой Java:

-keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/security/cacerts

Пароль по умолчанию на хранилище сертификатов Java cacerts - changeit. При желании вы можете изменить пароль. Установка сертификатов выполняется следующей командой:

sudo keytool -import -alias testAliasCA_cryptopro -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/security/cacerts -file ~/Downloads/cert.cer