Показать/Скрыть содержание

    Создание запроса на сертификат, хранимый в мобильном приложении

    Примечание

    Данный раздел дополняет раздел Создание запроса на сертификат и используется только в сценариях с мобильным приложением со встроенным DSS SDK и v2 API.

    Примечание

    Возможность работы с ключами и сертификатами, хранимыми в мобильном приложении, добавлена в версии КриптоПро DSS 2.0.3600 и новее.

    Новые сценарии позволяют при работе с КриптоПро DSS использовать ключ подписи и соответствующий сертификат, установленные в мобильном приложении (МП) со встроенным DSS SDK.

    Таким образом, подписывать электронные документы становится возможным непосредственно в МП пользователя.

    С точки зрения прикладных систем, интегрированных с КриптоПро DSS при помощи программного интерфейса (API), переход на новые сценарии подписи документов происходит «прозрачно». API DSS позволяет использовать одинаковую последовательность вызовов для подписи документов на ключах, хранимых в КриптоПро DSS или в МП пользователя. Создание Учетной записи пользователя DSS и привязка Мобильного устройства пользователя так же не меняются.

    Изменения претерпевают сценарии выпуска сертификата пользователя.

    Выпуск сертификата пользователя

    КриптоПро DSS предоставляет следующие основные сценарии выпуска сертификата для мобильного устройства пользователя:

    • Инициированный на сервере КриптоПро DSS
    • Инициированный в мобильном приложении

    Выпуск сертификата, инициированный на сервере КриптоПро DSS

    1. Оператор или пользователь через API DSS (или Веб-интерфейс DSS) создает неподписанный запрос на сертификат.
    2. Пользователь в мобильном приложении создает ключ подписи и подписывает запрос на сертификат. Подписанный запрос на сертификат передается на сервер DSS.
    3. В зависимости от настроек КриптоПро DSS подписанный запрос на сертификат передается в Удостоверяющий Центр для обработки.
    4. Выпущенный сертификат устанавливается в 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), или любым другим образом доступным прикладной системе. Пользователь может самостоятельно в мобильном приложении проверить наличие запросов, требующих подписи.

    Выпуск сертификата, инициированный в мобильном приложении

    1. Пользователь в мобильном приложении создает ключ подписи и запрос на сертификат.
    2. Запрос на сертификат тем или иным образом передается в УЦ для обработки.
    3. Выпущенный сертификат устанавливается в 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": "MIIHaDCCBxWgAwIBAgIRA2fDMgFerqugSAUoFEVkfqowCgYIKoUDBwEBAwIwggFWMRUwEwYFKoUDZAQSCjc3MTcxMDc5OTExIDAeBgkqhkiG9w0BCQEWEWluZm9AY3J5cHRvcHJvLnJ1MRgwFgYFKoUDZAESDTEwMzc3MDAwODU0NDQxCzAJBgNVBAYTAlJVMRgwFgYDVQQIDA83NyDQnNC+0YHQutCy0LAxFTATBgNVBAcMDNCc0L7RgdC60LLQsDEvMC0GA1UECQwm0YPQuy4g0KHRg9GJ0ZHQstGB0LrQuNC5INCy0LDQuyDQtC4gMTgxJTAjBgNVBAoMHNCe0J7QniAi0JrQoNCY0J/QotCeLdCf0KDQniIxazBpBgNVBAMMYtCi0LXRgdGC0L7QstGL0Lkg0L/QvtC00YfQuNC90LXQvdC90YvQuSDQo9CmINCe0J7QniAi0JrQoNCY0J/QotCeLdCf0KDQniIg0JPQntCh0KIgMjAxMiAo0KPQpiAyLjApMB4XDTIyMDMyMDE4MjY1NFoXDTIyMDYyMDE4MzY1NFowJDELMAkGA1UEBhMCUlUxFTATBgNVBAMMDFNlcnZlciBLZXkgMTBmMB8GCCqFAwcBAQEBMBMGByqFAwICJAAGCCqFAwcBAQICA0MABEAzUnckbC+GxHbaDgyQMcIEXQNc0rMU5pD/yAFkB6vJD99MWh2EeS09fIvqQNk8GQspgtDZF+4mJN4EfY5bukyGo4IE5TCCBOEwCwYDVR0PBAQDAgTwMB0GA1UdDgQWBBSJ4af1XQ46/KWwz/De/0fPm0vYIjA1BgkrBgEEAYI3FQcEKDAmBh4qhQMCAjIBCYfw4E6G7s8MhemRW4KvtFyBylWCs0QCAQECAQAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwGwYJKwYBBAGCNxUKBA4wDDAKBggrBgEFBQcDAjCBqAYIKwYBBQUHAQEEgZswgZgwOQYIKwYBBQUHMAGGLWh0dHA6Ly90ZXN0Y2EyMDEyLmNyeXB0b3Byby5ydS9vY3NwMi9vY3NwLnNyZjBbBggrBgEFBQcwAoZPaHR0cDovL3Rlc3RjYTIwMTIuY3J5cHRvcHJvLnJ1L2FpYS83NThkMWJmNzMyZDJkMGYyNWYxZTBmOWUxMzc5ZWJmYzIwZmU5ZTJmLmNydDAdBgNVHSAEFjAUMAgGBiqFA2RxAjAIBgYqhQNkcQEwKwYDVR0QBCQwIoAPMjAyMjAzMjAxODI2NTNagQ8yMDIyMDYyMDE4MjY1M1owggEaBgUqhQNkcASCAQ8wggELDDTQodCa0JfQmCAi0JrRgNC40L/RgtC+0J/RgNC+IENTUCIgKNCy0LXRgNGB0LjRjyA0LjApDDHQn9CQ0JogItCa0YDQuNC/0YLQvtCf0YDQviDQo9CmIiDQstC10YDRgdC40LggMi4wDE/QodC10YDRgtC40YTQuNC60LDRgiDRgdC+0L7RgtCy0LXRgtGB0YLQstC40Y8g4oSWINCh0KQvMTI0LTM5NzEg0L7RgiAxNS4wMS4yMDIxDE/QodC10YDRgtC40YTQuNC60LDRgiDRgdC+0L7RgtCy0LXRgtGB0YLQstC40Y8g4oSWINCh0KQvMTI4LTM4NzAg0L7RgiAyMy4wNy4yMDIwMC8GBSqFA2RvBCYMJNCf0JDQmtCcINCa0YDQuNC/0YLQvtCf0YDQviBIU00gMi4wLjBgBgNVHR8EWTBXMFWgU6BRhk9odHRwOi8vdGVzdGNhMjAxMi5jcnlwdG9wcm8ucnUvY2RwLzc1OGQxYmY3MzJkMmQwZjI1ZjFlMGY5ZTEzNzllYmZjMjBmZTllMmYuY3JsMAwGBSqFA2RyBAMCAQIwggGSBgNVHSMEggGJMIIBhYAUdY0b9zLS0PJfHg+eE3nr/CD+ni+hggFYpIIBVDCCAVAxCzAJBgNVBAYTAlJVMRUwEwYFKoUDZAQSCjc3MTcxMDc5OTExIDAeBgkqhkiG9w0BCQEWEWluZm9AY3J5cHRvcHJvLnJ1MRgwFgYFKoUDZAESDTEwMzc3MDAwODU0NDQxGDAWBgNVBAgMDzc3INCc0L7RgdC60LLQsDEVMBMGA1UEBwwM0JzQvtGB0LrQstCwMS8wLQYDVQQJDCbRg9C7LiDQodGD0YnRkdCy0YHQutC40Lkg0LLQsNC7INC0LiAxODElMCMGA1UECgwc0J7QntCeICLQmtCg0JjQn9Ci0J4t0J/QoNCeIjFlMGMGA1UEAwxc0KLQtdGB0YLQvtCy0YvQuSDQs9C+0LvQvtCy0L3QvtC5INCj0KYg0J7QntCeICLQmtCg0JjQn9Ci0J4t0J/QoNCeIiDQk9Ce0KHQoiAyMDEyICjQo9CmIDIuMCmCEQP4mIUAca3hjE17S0bFfxVCMAoGCCqFAwcBAQMCA0EAb2orxzzkPV7GmPTBwv+k03TYRV2bW2T3guasBMqHXAFMUDK2nyXZu9mXY4UJIKS86dqzNr0Zg/+e/Yurb9KW1g==",
            "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 приведена в статье Оповещения о событиях инициализации мобильного приложения.

    В начало © ООО "КРИПТО-ПРО", 2000-2023