Создание запроса на сертификат, хранимый в мобильном приложении
Примечание
Данный раздел дополняет раздел Создание запроса на сертификат и используется только в сценариях с мобильным приложением со встроенным DSS SDK и v2 API.
Примечание
Возможность работы с ключами и сертификатами, хранимыми в мобильном приложении, добавлена в версии КриптоПро DSS 2.0.3600 и новее.
Новые сценарии позволяют при работе с КриптоПро DSS использовать ключ подписи и соответствующий сертификат, установленные в мобильном приложении (МП) со встроенным DSS SDK.
Таким образом, подписывать электронные документы становится возможным непосредственно в МП пользователя.
С точки зрения прикладных систем, интегрированных с КриптоПро DSS при помощи программного интерфейса (API), переход на новые сценарии подписи документов происходит «прозрачно». API DSS позволяет использовать одинаковую последовательность вызовов для подписи документов на ключах, хранимых в КриптоПро DSS или в МП пользователя. Создание Учетной записи пользователя DSS и привязка Мобильного устройства пользователя так же не меняются.
Изменения претерпевают сценарии выпуска сертификата пользователя.
Выпуск сертификата пользователя
КриптоПро DSS предоставляет следующие основные сценарии выпуска сертификата для мобильного устройства пользователя:
- Инициированный на сервере КриптоПро DSS
- Инициированный в мобильном приложении
Выпуск сертификата, инициированный на сервере КриптоПро DSS
- Оператор или пользователь через API DSS (или Веб-интерфейс DSS) создает неподписанный запрос на сертификат.
- Пользователь в мобильном приложении создает ключ подписи и подписывает запрос на сертификат. Подписанный запрос на сертификат передается на сервер DSS.
- В зависимости от настроек КриптоПро DSS подписанный запрос на сертификат передается в Удостоверяющий Центр для обработки.
- Выпущенный сертификат устанавливается в DSS и мобильное приложение.
Создание неподписанного запроса на сертификат осуществляется через конечную точку /request. Как и в случае ключей, хранимых в DSS, оператор выбирает зарегистрированный в DSS Удостоверяющий Центр (УЦ), шаблон сертификата и заполняет имя субъекта.
Для задания способа хранения ключа на мобильном устройстве в объекте CertificateRequest
в поле Parameters
необходимо будет указать флаг (IsClient: true).
У объекта DssCertRequest, представляющего собой созданный запрос на сертификат, появится
дополнительный статус Status – SIGN_WAIT
.
Данный статус говорит Прикладной системе о том, что запрос на сертификат ожидает подписания в мобильном
приложении.
После того как пользователь подпишет запроса на сертификат, сертификат перейдет в статус PENDING
.
Обработка запроса в статусе PENDING
зависит от типа УЦ, к которому создавался запрос на сертификат.
Если КриптоПро DSS подключен к КриптоПро УЦ 2.0, то DSS автоматически отправит запрос в УЦ и загрузит выпущенный сертификат. Если запрос создавался для «Стороннего УЦ» (тип Out-of-Band), то подписанный запрос на сертификат должен быть выгружен Прикладной системой из DSS (конечная точка /request или пользователем в мобильном приложении и передан в УЦ для обработки.
Примечание
Перед выгрузкой запроса на сертификат прикладная система должна убедиться, что запрос находится в статусе PENDING
,
то есть подписан пользователем.
Выпущенный сертификат может быть установлен в DSS Прикладной системой через API DSS и далее, используя API DSS SDK, установлен в мобильном приложении пользователя. Также выпущенный сертификат может быть передан непосредственно пользователю для установки его в мобильное приложение и регистрации на сервере DSS. Таким образом, сценарий похож на сценарий выпуска сертификата с ключом, хранимым на сервере DSS. Но возникает дополнительный шаг, когда прикладная система ожидает подпись запроса на сертификат в мобильном приложении. Уведомление пользователя о необходимости подписать запрос на сертификат может быть выполнено через PUSH-уведомление (средствами DSS), или любым другим образом доступным прикладной системе. Пользователь может самостоятельно в мобильном приложении проверить наличие запросов, требующих подписи.
Выпуск сертификата, инициированный в мобильном приложении
- Пользователь в мобильном приложении создает ключ подписи и запрос на сертификат.
- Запрос на сертификат тем или иным образом передается в УЦ для обработки.
- Выпущенный сертификат устанавливается в DSS и мобильное приложение. На шаге 2 подписанный запрос на сертификат, используя API SDK, может быть загружен в DSS. Таким образом сценарий сводится к предыдущему.
Дополнительные сценарии выпуска сертификата
В режиме создания неквалифицированной ЭП КриптоПро DSS позволяет создать ключ и сертификат подписи и далее экспортировать их в МП. Таким образом, будет возможно использовать текущие сценарии выпуска сертификата.
Управление сертификатами пользователя
С точки зрения API DSS управление сертификатами и запросами на сертификат не изменяется. Получение списка сертификатов и запросов, удаление сертификатов и запросов, аннулирование сертификатов, загрузка содержимого сертификата и запроса на сертификат осуществляется через действующие конечные точки – /certificates-v2, /request-v2.
Прикладная система может различить запросы на сертификат по типу хранения ключ (на сервере DSS или у пользователя) по значению поля CertificateType объекта
DSSCertRequest: ServerSide
, ClientSide
. Так же Прикладная система может может проверить значение поля Storage: Mobile
, Server
.
Прикладная система может различить сертификат по типу хранения ключ (на сервере DSS или у пользователя) по значению поля CertificateType объекта
DSSCertificateEx: ServerSide
, ClientSide
. Так же Прикладная система может может проверить значение поля Storage: Mobile
, Server
.
Если к Учетной записи пользователя привязано несколько различных мобильных приложений, то прикладной системе необходимо определить для какого приложения можно создать
операцию с данным сертификатом. Для этого прикладная система должна посмотреть на значение поля StorageInfo
в объекте сертификата DSSCertificateEx.
В данном поле хранится список размещений ключа пользователя. Из данного списка Прикладная система может получить идентификаторы прикладных систем для которых можно создать
операцию с данным сертификатом.
Полученный идентификатор (-ы) необходимо использовать только в случае, если при создании операции подписи потребуется выбор прикладной системы.
Пример запроса на создание неподписанного запроса на сертификат
Запрос
POST /SignServerClient/rest/api/v2/requests HTTP/1.1
Host: dss.cryptopro.ru
Content-Type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOi ... 12JY71f1RC3SnQ
Content-Length: 253
{
"AuthorityId":1,
"PinCode":"",
"DistinguishedName":{"2.5.4.3":"Sandra Prosacco","2.5.4.6":"RU"},
"Parameters":{
"TemplateOid":"1.2.643.2.2.50.1.9.16527438.14395276.12208347.4971100.25941.39364",
"IsClient": true
}
}
Ответ
{
"Operation": {
"Id": null,
"Result": {
"CertificateType": "ClientSide",
"Storage": "Mobile",
"Base64Request": "MIHpAgEAMCQxCzAJBgNVBAYTAlJVMR ... RW4KvtFyBylWCs0QCAQECAQA=",
"CertificateAuthorityID": 1,
"CADisplayName": null,
"DistName": "CN=Irene Heller, C=RU",
"Subject": "Irene Heller",
"Status": "SIGN_WAIT",
"ID": 13222,
"CARequestID": null,
"CertificateID": 0,
"RequestType": "Certificate",
"GroupID": "b3c2d004-48dd-4c40-826f-43928f3729b6"
},
"Status": "Completed",
"Error": null,
"ErrorDescription": null,
"ExpirationDate": 1645894923
}
}
Пример получения списка запросов на сертификат
Запрос
GET /SignServerClient/rest/api/v2/requests/13222 HTTP/1.1
Host: hostname
Content-Type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhb ... glWYSB2DgO5nA
Ответ
{
"CertificateType": "ClientSide",
"Storage": "Mobile",
"StorageInfo": [
{
"StorageType": "Mobile",
"Data": {
"MyDssSystem": "44631690-5580-41b2-b449-732d7aef7404",
"Kids": [
"73110902"
]
}
}
],
"Base64Request": "MIIBOzCB6QIBADAkMQ ... NLlcwkbNwMa9u9vSDm0BfA==",
"CertificateAuthorityID": 1013,
"CADisplayName": null,
"DistName": "CN=Mobile Key 1, C=RU",
"Subject": "Mobile Key 1",
"Status": "ACCEPTED",
"ID": 73222,
"CARequestID": "36b5fb7f-5c50-47e5-b3d9-ae5e012be6b3",
"CertificateID": 68395,
"RequestType": "Certificate",
"GroupID": "8fbf6650-b9a4-40d0-8931-3b528e39707b"
}
Пример получения списка сертификатов
Запрос
GET /SignServerClient/rest/api/v2/certificates HTTP/1.1
Host: hostname
Content-Type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJ ... bcAJHi6fFFnPJg
Ответ
[
{
"CertificateType": "ClientSide",
"RemainingPinAttempts": 2147483647,
"UserId": "490579a0-3d40-4aa3-bcf4-ddf11b04d99c",
"Storage": "Mobile",
"StorageInfo": [
{
"StorageType": "Mobile",
"Data": {
"MyDssSystem": "44631690-5580-41b2-b449-732d7aef7404",
"Kids": [
"73110902"
]
}
}
],
"SubjectName": [
{
"IsRequired": false,
"Order": 0,
"OID": "2.5.4.3",
"Name": "Общее имя",
"Value": "Mobile Key 1",
"StringIdentifier": "CN"
},
{
"IsRequired": false,
"Order": 3,
"OID": "2.5.4.6",
"Name": "Страна/регион",
"Value": "RU",
"StringIdentifier": "C"
}
],
"IssuerName": [
{
"IsRequired": false,
"Order": 0,
"OID": "2.5.4.3",
"Name": "Общее имя",
"Value": "Тестовый подчиненный УЦ ООО \"КРИПТО-ПРО\" ГОСТ 2012 (УЦ 2.0)",
"StringIdentifier": "CN"
},
{
"IsRequired": false,
"Order": 7,
"OID": "2.5.4.10",
"Name": "Организация",
"Value": "ООО \"КРИПТО-ПРО\"",
"StringIdentifier": "O"
},
{
"IsRequired": false,
"Order": 6,
"OID": "2.5.4.9",
"Name": "Адрес",
"Value": "ул. Сущёвский вал д. 18",
"StringIdentifier": "STREET"
},
{
"IsRequired": false,
"Order": 5,
"OID": "2.5.4.7",
"Name": "Город",
"Value": "Москва",
"StringIdentifier": "L"
},
{
"IsRequired": false,
"Order": 4,
"OID": "2.5.4.8",
"Name": "Область",
"Value": "77 Москва",
"StringIdentifier": "S"
},
{
"IsRequired": false,
"Order": 3,
"OID": "2.5.4.6",
"Name": "Страна/регион",
"Value": "RU",
"StringIdentifier": "C"
},
{
"IsRequired": false,
"Order": 10,
"OID": "1.2.643.100.1",
"Name": "ОГРН",
"Value": "1037700085444",
"StringIdentifier": "ОГРН"
},
{
"IsRequired": false,
"Order": 14,
"OID": "1.2.840.113549.1.9.1",
"Name": "Адрес E-Mail",
"Value": "info@cryptopro.ru",
"StringIdentifier": "E"
},
{
"IsRequired": false,
"Order": 13,
"OID": "1.2.643.100.4",
"Name": "ИНН ЮЛ",
"Value": "7717107991",
"StringIdentifier": "ИНН ЮЛ"
}
],
"Thumbprint": "20AC7175898D1F0A367207F79E2B3403E4461E14",
"ValidFrom": 1647799315,
"ValidTo": 1655748715,
"ID": 68395,
"DName": "CN=Mobile Key 1, C=RU",
"CertificateBase64": "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",
"Status": {
"Value": "ACTIVE",
"RevocationInfo": null,
"PinCode": null,
"ActiveCertId": 0
},
"IsDefault": false,
"CertificateAuthorityID": 1013,
"CspID": "8fbf6650-b9a4-40d0-8931-3b528e39707b",
"HashAlgorithms": [
"GR 34.11-2012 256"
],
"ProviderName": null,
"ProviderType": 0,
"PrivateKeyNotBefore": "2022-03-20T21:12:21.873",
"PrivateKeyNotAfter": "2023-06-20T21:12:21.873",
"HasPin": false,
"FriendlyName": ""
},
{
"CertificateType": "ServerSide",
"RemainingPinAttempts": 2147483647,
"UserId": "490579a0-3d40-4aa3-bcf4-ddf11b04d99c",
"Storage": "Server",
"StorageInfo": [],
"SubjectName": [
{
"IsRequired": false,
"Order": 0,
"OID": "2.5.4.3",
"Name": "Общее имя",
"Value": "Server Key 1",
"StringIdentifier": "CN"
},
{
"IsRequired": false,
"Order": 3,
"OID": "2.5.4.6",
"Name": "Страна/регион",
"Value": "RU",
"StringIdentifier": "C"
}
],
"IssuerName": [
{
"IsRequired": false,
"Order": 0,
"OID": "2.5.4.3",
"Name": "Общее имя",
"Value": "Тестовый подчиненный УЦ ООО \"КРИПТО-ПРО\" ГОСТ 2012 (УЦ 2.0)",
"StringIdentifier": "CN"
},
{
"IsRequired": false,
"Order": 7,
"OID": "2.5.4.10",
"Name": "Организация",
"Value": "ООО \"КРИПТО-ПРО\"",
"StringIdentifier": "O"
},
{
"IsRequired": false,
"Order": 6,
"OID": "2.5.4.9",
"Name": "Адрес",
"Value": "ул. Сущёвский вал д. 18",
"StringIdentifier": "STREET"
},
{
"IsRequired": false,
"Order": 5,
"OID": "2.5.4.7",
"Name": "Город",
"Value": "Москва",
"StringIdentifier": "L"
},
{
"IsRequired": false,
"Order": 4,
"OID": "2.5.4.8",
"Name": "Область",
"Value": "77 Москва",
"StringIdentifier": "S"
},
{
"IsRequired": false,
"Order": 3,
"OID": "2.5.4.6",
"Name": "Страна/регион",
"Value": "RU",
"StringIdentifier": "C"
},
{
"IsRequired": false,
"Order": 10,
"OID": "1.2.643.100.1",
"Name": "ОГРН",
"Value": "1037700085444",
"StringIdentifier": "ОГРН"
},
{
"IsRequired": false,
"Order": 14,
"OID": "1.2.840.113549.1.9.1",
"Name": "Адрес E-Mail",
"Value": "info@cryptopro.ru",
"StringIdentifier": "E"
},
{
"IsRequired": false,
"Order": 13,
"OID": "1.2.643.100.4",
"Name": "ИНН ЮЛ",
"Value": "7717107991",
"StringIdentifier": "ИНН ЮЛ"
}
],
"Thumbprint": "78DFFCBBFF25CAD4BD9017923686E8BA888BFCE6",
"ValidFrom": 1647800814,
"ValidTo": 1655750214,
"ID": 68396,
"DName": "CN=Server Key 1, C=RU",
"CertificateBase64": "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",
"Status": {
"Value": "ACTIVE",
"RevocationInfo": null,
"PinCode": null,
"ActiveCertId": 0
},
"IsDefault": false,
"CertificateAuthorityID": 1013,
"CspID": "0c00633e-89a8-4cdf-88a6-6d3bb3c71ef1",
"HashAlgorithms": [
"GR 34.11-2012 256"
],
"ProviderName": null,
"ProviderType": 0,
"PrivateKeyNotBefore": "2022-03-20T21:37:21.087",
"PrivateKeyNotAfter": "2023-06-20T21:37:21.087",
"HasPin": false,
"FriendlyName": ""
}
]
Настройка Сервиса Подписи
Для поддержки сертификатов и ключей, хранимых в мобильном приложении, в Веб-интерфейсе DSS необходимо:
- Добавить криптопровайдер типа
Lite
Add-DssCryptoProvider -ProviderName "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider" -ProviderType 80 -TypeId Lite
- Задать режим подписи Сервиса Подписи: подпись хэш-значения, подпись документа.
Set-DssProperties -ClientSignFullDocRequired $true
Примечание
Параметр ClientSignFullDocRequired
определяет тип данных, которые будут
передаваться в МП для подписи.
Если ClientSignFullDocRequired = $false
, в МП передается только хэш-значение документа.
В данном режиме поддерживаются все форматы подписи.
Если ClientSignFullDocRequired = $true
, в МП передается документ.
В данном режиме поддерживаются следующие форматы подписи: CMS (CAdES-BES, CAdES-T, CAdES-XLT1), XMLDSig, Необработанная подпись.
- Дополнительно можно настроить отправку Callback о событии подписи запроса на сертификат в МП.
Данная возможность может быть полезна для автоматизации процесса выпуска сертификата. Прикладная система через callback может быть оповещена о том, что пользователь подписал запрос на сертификат, и запрос на сертификат может быть передан в УЦ для обработки.
Регистрация callback приведена в статье Оповещения о событиях инициализации мобильного приложения.