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

    REST API Сервиса Подписи v1 (для обратной совместимости)

    Внимание!

    Методы, описанные в данном разделе, работают в режиме обратной совместимости и НЕ поддерживают подтверждение операций.

    Список конечных точек v1 API:

    • Запросы на сертификат,
    • Сертификаты,
    • Документы.

    Конечные точки, общие для версий API:

    • Политика Сервиса Подписи,
    • Версия API.

    Конечная точка Requests

    Внимание!

    Данная конечная точка работает только в режиме обратной совместимости и НЕ поддерживает подтверждение операций.

    Конечная точка requests предоставляет следующие методы:

    • Создание запроса на сертификат
    • Получение списка запросов на сертификат
    • Получение запроса на сертификат по идентификатору
    • Удаление запроса на сертификат по идентификатору
    • Получение содержимого запроса на сертификат
    • Получение содержимого запроса на отзыв сертификата
    • Одобрение и отклонение запроса на сертификат
    • Одобрение и отклонение запроса на отзыв

    Создание запроса на сертификат

    Параметр Значение
    HTTP-метод POST
    Путь https://{{hostname}}/{{instanceName}}/api/requests
    Параметры CertificateRequest - Запрос на создание сертификата
    Возвращаемое значение DSSCertRequest - Созданный запрос на сертификат

    Подробнее о выпуске запроса на сертификат: Выпуск сертификата

    Получение списка запросов на сертификат

    Параметр Значение
    HTTP-метод GET
    Путь https://{{hostname}}/{{instanceName}}/api/requests
    Параметры Метод не имеет параметров
    Возвращаемое значение List<DSSCertRequest> - Список созданных запросов на сертификат
    Примечание

    Для получения списка запросов на отзыв сертификата необходимо использовать метод /certificates/{key}/revokerequests. Список запросов на отзыв сертификата может быть получен только для сертификата, выпущенного через модуль интеграции с КриптоПро УЦ 2.0.

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

    GET https://{{hostname}}/{{instanceName}}/api/requests HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV ... eFfe5CkkuKMQ
    

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

    HTTP/1.1 200 OK
    Content-Length: 1379
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    
    [{
            "CertificateType": "ServerSide",
            "Base64Request": "MIIBKTCB2QIBADARMQ8wDQ ... h7a6eLJ9axIe0vqaqhtWw==",
            "CertificateAuthorityID": 11,
            "DistName": "CN=idonly",
            "Subject": "idonly",
            "Status": "ACCEPTED",
            "ID": 23,
            "CARequestID": null,
            "CertificateID": 14,
            "RequestType": "Certificate",
            "GroupID": "e8e67f9e-7eed-4116-ad98-20582e4d766e"
        }, {
            "CertificateType": "ServerSide",
            "Base64Request": "MIIBKTCB2QIBADARMQ8wDQ ... BthH+U2Obfd9sbjGtE47YDeW+Ng==",
            "CertificateAuthorityID": 11,
            "DistName": "CN=idonly",
            "Subject": "idonly",
            "Status": "PENDING",
            "ID": 24,
            "CARequestID": null,
            "CertificateID": 0,
            "RequestType": "Certificate",
            "GroupID": "e8e67f9e-7eed-4116-ad98-20582e4d766e"
        }
    ]
    

    Получение запроса на сертификат по идентификатору

    Параметр Значение
    HTTP-метод GET
    Путь https://{{hostname}}/{{instanceName}}/api/requests/{req_id}
    Параметры Идентификатор запроса на сертификат
    Возвращаемое значение DSSCertRequest - запрос на сертификат

    Типовые ошибки

    HTTP-код Ошибка Описание
    404 Запрос на сертификат с указанным ID не найден

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

    GET https://{{hostname}}/{{instanceName}}/api/requests/24 HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJK ... ZIF89F4cmHc6kFM_QQXQ
    

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

    HTTP/1.1 200 OK
    Content-Length: 687
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    
    {
        "CertificateType": "ServerSide",
        "Base64Request": "MIIBKTCB2QIBADARMQ8wDQ ... TxlBthH+U2Obfd9sbjGtE47YDeW+Ng==",
        "CertificateAuthorityID": 11,
        "DistName": "CN=idonly",
        "Subject": "idonly",
        "Status": "PENDING",
        "ID": 24,
        "CARequestID": null,
        "CertificateID": 0,
        "RequestType": "Certificate",
        "GroupID": "e8e67f9e-7eed-4116-ad98-20582e4d766e"
    }
    

    Удаление запроса на сертификат по идентификатору

    Параметр Значение
    HTTP-метод DELETE
    Путь https://{{hostname}}/{{instanceName}}/api/requests/{req_id}
    Параметры Идентификатор запроса на сертификат
    Возвращаемое значение Метод не имеет возвращаемого значения
    Примечание

    Если запрос на сертификат с указанным идентификатором не найден, сервис вернет HTTP-код 200.

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

    DELETE https://{{hostname}}/{{instanceName}}/api/requests/27 HTTP/1.1
    Authorization: Bearer eyJ0eXAi ... RwvkYRac7AJuuX2aeY1H7fjpQ
    Host: host
    Content-Length: 0
    

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

    HTTP/1.1 200 OK
    Content-Length: 0
    Server: Microsoft-IIS/7.5
    

    Получение содержимого запроса на сертификат

    Метод предназначен для получения содержимого запроса на сертификат в различных представлениях:

    • PKCS#10
    • XML
    • Печатное представление (HTML)
    Параметр Значение
    HTTP-метод GET
    Путь https://{{hostname}}/{{instanceName}}/api/requests/{req_id}/content?format={format}&authorityId={ca_id}
    Параметры req_id - Идентификатор запроса на сертификат
    format - Формат представления содержимого запроса.
    ca_id - Идентификатор Удостоверяющего Центра
    Возвращаемое значение Содержимое запроса на сертификат

    Описание форматов представления запроса на сертификат - DSSCertificateFormatEnum

    Типовые ошибки

    HTTP-код Ошибка Описание
    404 Запрос на сертификат с указанным ID не найден

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

    GET https://{{hostname}}/{{instanceName}}/api/requests/24/content?format=4&authorityId=0 HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGci ... fBD3XvtOUkZOG6yZj1CNQ
    

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

    HTTP/1.1 200 OK
    Content-Length: 4535
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    
    "<?xml version=\"1.0\" encoding=\"utf-16\"?>
    <html xmlns:pki=\"http://www.cryptopro.ru/2001/Schema/WD1-PKI\">
        <head>
            <title>Запрос на сертификат X.509</title>
            <style>
                <!--\r\nH1\r\n{ \r\n\tfont-size: 10pt; \r\n\tfont-family: Verdana; \r\n\ttext-align: Center; \r\n\tmargin: 0px \r\n}\r\nH2\r\n{\r\n\tfont-size: 8pt; \r\n\tfont-family: Verdana; \r\n\ttext-align: Center; \r\n\tmargin: 0px \r\n}\r\n.foot        \r\n{ \r\n\tfont-size: 8pt; \r\n\tfont-family: Verdana; \r\n\ttext-align: Right \r\n}\r\n.note        \r\n{ \r\n\tfont-size: 7pt; \r\n\tfont-family: Verdana; \r\n\ttext-decoration: underline; \r\n\tmargin: 0px \r\n}\r\nP\r\n{\r\n    FONT-SIZE: 7pt;\r\n    MARGIN: 0px;\r\n    FONT-FAMILY: Verdana\r\n}\r\nPRE\r\n{\r\n    FONT-SIZE: 7pt;\r\n    MARGIN: 0px;\r\n    FONT-FAMILY: Verdana\r\n}\r\n-->
            </style>
        </head>
        <body>
            <h1>
                <b>Наименование организации-Удостоверяющего Центра</b>
            </h1>
            <h2>
                <b>Запрос на сертификат ключа проверки электронной подписи</b>
            </h2>
            <hr />
            <div style=\"margin-left:1em\">
                <p>
                    <b>Сведения о запросе на сертификат:</b>
                </p>
                <div style=\"margin-left:1em\">
                    <p>
                        <b>Кем выпущен:</b>
                    </p>
                    <div style=\"margin-left:1em\">
                        <p>idonly</p>
                    </div>
                </div>
            </div>
            <div style=\"margin-left:1em\">
                <p>
                    <b>Версия:</b> 1\r\n     (0x0)\r\n  </p><p>
                    <b>Субьект запроса на сертификат: </b>CN\r\n  =\r\n  idonly</p><p>
                    <b>Ключ проверки электронной подписи:</b>
                </p>
                <div style=\"margin-left:1em\">
                    <p>Алгоритм ключа проверки электронной подписи:</p>
                    <div style=\"margin-left:1em\">
                        <p>Название: \r\n    ГОСТ Р 34.10-2001</p>
                        <div style=\"margin-left:1em\">
                            <p> Параметры:\r\n      30 12 06 07 2a 85 03 02 02 24 00 06 07 2a 85 03 02 02 1e 01</p>
                        </div>
                    </div><p>Значение: \r\n    04 40 16 5b c3 2c c2 81 2d 76 d7 16 cf 05 71 62 ef cf 2b de d2 bb a4 8c 76 31 03 e9 3b c2 32 ca 7c 7c 61 ca 7f 88 b4 58 e1 81 f0 7a 74 33 59 15 67 10 4c 1d 57 88 7d 66 d9 d4 dc ea 5b 3b 97 09 e9 0a</p>
                </div><p>
                    <b>Атрибуты запроса на сертификат X.509</b>
                </p>
                <div style=\"margin-left:1em\">
                    <p>Название: \r\n    Расширения сертификатов</p><p>
                        <b>Расширения сертификата X.509</b>
                    </p>
                    <div style=\"margin-left:1em\">
                        <p>1.\r\n    Расширение </p>
                        <div style=\"margin-left:1em\">
                            <p>Название: \r\n    Использование ключа</p><p>Значение: \r\n    Цифровая подпись, Неотрекаемость, Шифрование ключей, Шифрование данных (f0)</p>
                        </div><p>2.\r\n    Расширение </p>
                        <div style=\"margin-left:1em\">
                            <p>Название: \r\n    Идентификатор ключа субъекта</p><p>Значение: \r\n    77 32 f2 d3 22 77 0d b6 72 06 d7 18 23 ad 2a 69 78 48 4c 78</p>
                        </div><p>3.\r\n    Расширение </p>
                        <div style=\"margin-left:1em\">
                            <p>Название: \r\n    Улучшенный ключ</p><p>Значение: \r\n    Пользователь Центра Регистрации, HTTP, TLS клиент (1.2.643.2.2.34.6), Проверка подлинности клиента (1.3.6.1.5.5.7.3.2)</p>
                        </div>
                    </div><p>
                        <b>Подпись запроса:</b>
                    </p>
                    <div style=\"margin-left:1em\">
                        <p>Алгоритм подписи:</p>
                        <div style=\"margin-left:1em\">
                            <p>Название: \r\n    ГОСТ Р 34.11/34.10-2001</p>
                        </div><p>Значение: \r\n    36 BE E5 0D D8 8E 13 AD 31 6E 6C DF 7D 9B 63 53 FE 11 B6 41 19 4F FF DA 31 4A 0C 27 EE 4A D2 81 EE B1 42 82 55 EF 5E DA 00 08 26 DC 88 35 7E AD 98 13 EC B0 CA 5D D9 1C 33 C1 B3 89 3F C8 07 DD</p>
                    </div>
                </div>
            </div>
            <hr />
            <br />
            <p class=\"foot\">Подпись владельца запроса на сертификат: ___________/_______________</p>
            <br />
            <p class=\"foot\">\"___\" ________ 20__ г.</p>
            <br />
            <p class=\"foot\">М. П.</p><p>Средство электронной подписи \"КриптоПро CSP\"</p>
            <br />
            <p class=\"note\">Подписанный запрос на сертификат ключа проверки электронной подписи следует переслать по адресу:</p><p class=\"note\">111111, Москва, ул. ХХХХХХХХ, д.ХХ. XXXXXXXXXXXXXXXXXXXX</p><p class=\"note\">Администратору информационной безопасности.</p>
        </body>
    </html>"
    

    Получение содержимого запроса на отзыв сертификата

    Параметр Значение
    HTTP-метод GET
    Путь https://{{hostname}}/{{instanceName}}/api/requests/revokerequests/{req_id}/content?format={format}&authorityId={ca_id}
    Параметры req_id - Идентификатор запроса на сертификат,
    format - Тип представления содержимого запроса,
    ca_id - Идентификатор Удостоверяющего Центра
    Возвращаемое значение Содержимое запроса на отзыв сертификата
    Примечание

    Использование данного метода допустимо только для сертификатов, выпущенных при помощи обработчика запросов на сертификат для КриптоПро УЦ 2.0.

    Типовые ошибки

    HTTP-код Ошибка Описание
    404 Запрос на сертификат с указанным ID не найден

    Одобрение и отклонение запроса на сертификат

    Принятие/отклонение запроса на сертификат:

    Параметр Значение
    HTTP-метод PATCH
    Путь https://{{hostname}}/{{instanceName}}/api/requests/{req_id}/status
    Параметры req_id - Идентификатор запроса на сертификат
    RequestStatus - Новый статус запроса на сертификат.
    Возвращаемое значение Метод не имеет возвращаемого значения
    HTTP-код Ошибка Описание
    401 Authorization has been denied for this request Пользователь не имеет разрешения на выполнение запроса
    Примечание

    Метод может быть вызван только пользователем с ролью Оператора. Оператор может принять или отклонить запросы на сертификаты созданные через модуль интеграции с КриптоПро УЦ 2.0. Запросы на сертификат созданные через Offline УЦ могут быть только отклонены.

    При отклонении/одобрении запроса на сертификат необходимо заполнить только поля Type и Value:

    • Поле Type имеет фиксированное значение 0 (Certificate).
    • Поле Value может принимать значения 4 (ACCEPTED) или 8 (REJECTED)

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

    POST https://{{hostname}}/{{instanceName}}/api/requests/26/status HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1Qi ... Y3m5uZc59QwnD0BA
    Content-Type: application/json; charset=utf-8
    
    Content-Length: 39
    Expect: 100-continue
    
    {"Value":8,"ID":"-1","caID":0,"Type":0}
    

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

    HTTP/1.1 200 OK
    Content-Length: 0
    Server: Microsoft-IIS/7.5
    

    Принятие/отклонение запроса на отзыв сертификата

    Параметр Значение
    HTTP-метод PATCH
    Путь https://{{hostname}}/{{instanceName}}/api/requests/revokerequests/{revreq_id}/status
    Параметры revreq_id - Идентификатор запроса в УЦ
    RequestStatus - Новый статус запроса на сертификат.
    Возвращаемое значение Метод не имеет возвращаемого значения

    В структруре RequestStatus необходимо заполнить поля:

    • Value - может принимать значения 4 (ACCEPTED) или 8 (REJECTED)
    • caID - идентификатор Удостоверяющего Центра
    • Type имеет фиксированное значение 0 (Certificate)
    • Comment (опциональное) - комментарий Оператора. Например, причина отклонения запроса.

    Значение req_id необходимо взять их результата работы метода /certificates/{cert_id}/revokerequests - поле ID в структуре DSSRevRequest.

    Последовательность действий Оператора при одобрении/отклонении запросов на отзыв:

    • получить список сертификатов пользователя /certificates/
    • для каждого из сертификатов пользователя проверить наличие запросов на отзыв /certificates/{cert_id}/revokerequests
    • если запрос DSSRevRequest имеет поле Status PENDING, то одобрить или отклонить его
    HTTP-код Ошибка Описание
    401 Authorization has been denied for this request Пользователь не имеет разрешения на выполнение запроса
    400 invalid_enroll Неверно указан идентификатор УЦ
    400 invalid_rev_request Неверно указан идентификатор запроса
    Примечание

    Метод может быть вызван только пользователем с ролью Оператора. Оператор может принять или отклонить запросы на отзыв, созданные через модуль интеграции с КриптоПро УЦ 2.0.

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

    POST https://{{hostname}}/{{instanceName}}/api/requests/revokerequests/6a5c8b4a-52c6-e811-80db-00155d454d12/status HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJHMD ... o9ju8CQuZneFapoL2q4CjUJAw
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 39
    Expect: 100-continue
    
    {"Value":4,"ID":"-1","caID":6,"Type":0}
    

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

    HTTP/1.1 200 OK
    Content-Length: 0
    Server: Microsoft-IIS/7.5
    

    Конечная точка Certificates

    Внимание!

    Данная конечная точка работает только в режиме обратной совместимости и НЕ поддерживает подтверждение операций.

    Конечная точка certificates предоставляет следующие методы:

    • Получение списка сертификатов
    • Получение сертификата по идентификатору
    • Удаление сертификата по идентификатору
    • Получение содержимого сертификата
    • Получение списка запросов на отзыв
    • Установка сертификата

    Изменение свойств сертификата:

    • Назначение сертификата по умолчанию
    • Назначение дружественного имени

    Изменение статуса сертитификата:

    • Отзыв
    Примечание

    В случае использования сценариев авторизации с низким уровнем доверия вызывающая ИС должна убедиться, что полученные сертификаты (данные о сертификатах) соответствуют целевому пользователю.

    Получение списка сертификатов

    Параметр Значение
    HTTP-метод GET
    Путь https://{{hostname}}/{{instanceName}}/api/certificates
    Параметры Метод не имеет параметров
    Возвращаемое значение List<DSSCertificateEx> - Список сертификатов

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

    GET https://{{hostname}}/{{instanceName}}/api/certificates HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV ... eFfe5CkkuKMQ
    

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

    HTTP/1.1 200 OK
    Content-Length: 4272
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    
    [{
            "CertificateType": "ServerSide",
            "ID": 14,
            "DName": "CN=idonly",
            "CertificateBase64": "MIIDCDCCA ... ugFV8td4DaneG2/gno7T6Alohp6CF/yOu",
            "Status": {
                "Value": "ACTIVE",
                "RevocationInfo": null,
                "PinCode": null,
                "ActiveCertId": 0
            },
            "IsDefault": false,
            "CertificateAuthorityID": 11,
            "CspID": "e8e67f9e-7eed-4116-ad98-20582e4d766e",
            "HashAlgorithms": ["GOST R 34.11-94"],
            "ProviderName": null,
            "ProviderType": 0,
            "PrivateKeyNotBefore": null,
            "PrivateKeyNotAfter": null,
            "HasPin": false,
            "FriendlyName": ""
        }, {
            "CertificateType": "ServerSide",
            "ID": 15,
            "DName": "CN=idonly, C=RU",
            "CertificateBase64": "MIIG+TCCBq ... dJkhC/rkJrBYhT574WAMgGdxGQb1lQ==",
            "Status": {
                "Value": "ACTIVE",
                "RevocationInfo": null,
                "PinCode": null,
                "ActiveCertId": 0
            },
            "IsDefault": false,
            "CertificateAuthorityID": 6,
            "CspID": "e8e67f9e-7eed-4116-ad98-20582e4d766e",
            "HashAlgorithms": ["GOST R 34.11-94"],
            "ProviderName": null,
            "ProviderType": 0,
            "PrivateKeyNotBefore": null,
            "PrivateKeyNotAfter": null,
            "HasPin": false,
            "FriendlyName": ""
        }
    ]
    

    Получение сертификата по идентификатору

    Параметр Значение
    HTTP-метод GET
    Путь https://{{hostname}}/{{instanceName}}/api/certificates/{cert_id}
    Параметры cert_id - идентификатор сертификата
    Возвращаемое значение DSSCertificateEx - Сертификат
    HTTP-код Ошибка Описание
    404 Cертификат с указанным ID не найден

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

    GET https://{{hostname}}/{{instanceName}}/api/certificates/14 HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV ... eFfe5CkkuKMQ
    

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

    HTTP/1.1 200 OK
    Content-Length: 1458
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    
    {
        "CertificateType": "ServerSide",
        "ID": 14,
        "DName": "CN=idonly",
        "CertificateBase64": "MIIDCDCCAregAwIBAgITEgAtlI ... hYHzugFV8td4DaneG2/gno7T6Alohp6CF/yOu",
        "Status": {
            "Value": "ACTIVE",
            "RevocationInfo": null,
            "PinCode": null,
            "ActiveCertId": 0
        },
        "IsDefault": false,
        "CertificateAuthorityID": 11,
        "CspID": "e8e67f9e-7eed-4116-ad98-20582e4d766e",
        "HashAlgorithms": ["GOST R 34.11-94"],
        "ProviderName": null,
        "ProviderType": 0,
        "PrivateKeyNotBefore": null,
        "PrivateKeyNotAfter": null,
        "HasPin": false,
        "FriendlyName": ""
    }
    

    Удаление сертификата по идентификатору

    Параметр Значение
    HTTP-метод DELETE
    Путь https://{{hostname}}/{{instanceName}}/api/certificates/{cert_id}
    Параметры cert_id - Идентификатор сертификата
    Возвращаемое значение Метод не имеет возвращаемого значения
    HTTP-код Ошибка Описание
    404 Cертификат с указанным ID не найден

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

    DELETE https://{{hostname}}/{{instanceName}}/api/certificates/14 HTTP/1.1
    Authorization: Bearer eyJ0eXAi ... RwvkYRac7AJuuX2aeY1H7fjpQ
    Host: host
    Content-Length: 0
    

    Получение содержимого сертификата

    Параметр Значение
    HTTP-метод GET
    Путь https://{{hostname}}/{{instanceName}}/api/certificates/{cert_id}/content?format={format}
    Параметры req_id - Идентификатор сертификата
    format - Формат представления содержимого сертификата.
    Возвращаемое значение Содержимое сертификата

    Описание форматов представления сертификата - DSSCertificateFormatEnum

    Типовые ошибки

    HTTP-код Ошибка Описание
    404 Сертификат с указанным ID не найден

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

    GET https://{{hostname}}/{{instanceName}}/api/certificates/14/content?format=2 HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLC ... LgtvjC0-2GA0Kth2ZnorIoiA
    Host: host
    

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

    HTTP/1.1 200 OK
    Content-Length: 5571
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    
    "<?xml version=\"1.0\" encoding=\"utf-16\"?>
    <pki:certificate xmlns:pki=\"http://www.cryptopro.ru/2001/Schema/WD1-PKI\">
        <pki:version pki:value=\"2\">3</pki:version>
        <pki:serial-number>12002D94874E4BA91F129E408D0000002D9487</pki:serial-number>
        <pki:issuer pki:count=\"5\">
            <pki:rdn pki:order=\"5\" pki:count=\"1\">
                <pki:rdn-attr pki:order=\"1\" pki:id=\"2.5.4.3\">
                    <pki:name xml:lang=\"ru\">CN</pki:name>
                    <pki:value pki:lang=\"ru\">CRYPTO-PRO Test Center 2</pki:value>
                </pki:rdn-attr>
            </pki:rdn>
            <pki:rdn pki:order=\"4\" pki:count=\"1\">
                <pki:rdn-attr pki:order=\"1\" pki:id=\"2.5.4.10\">
                    <pki:name xml:lang=\"ru\">O</pki:name>
                    <pki:value pki:lang=\"ru\">CRYPTO-PRO LLC</pki:value>
                </pki:rdn-attr>
            </pki:rdn>
            <pki:rdn pki:order=\"3\" pki:count=\"1\">
                <pki:rdn-attr pki:order=\"1\" pki:id=\"2.5.4.7\">
                    <pki:name xml:lang=\"ru\">L</pki:name>
                    <pki:value pki:lang=\"ru\">Moscow</pki:value>
                </pki:rdn-attr>
            </pki:rdn>
            <pki:rdn pki:order=\"2\" pki:count=\"1\">
                <pki:rdn-attr pki:order=\"1\" pki:id=\"2.5.4.6\">
                    <pki:name xml:lang=\"ru\">C</pki:name>
                    <pki:value pki:lang=\"ru\">RU</pki:value>
                </pki:rdn-attr>
            </pki:rdn>
            <pki:rdn pki:order=\"1\" pki:count=\"1\">
                <pki:rdn-attr pki:order=\"1\" pki:id=\"1.2.840.113549.1.9.1\">
                    <pki:name xml:lang=\"ru\">E</pki:name>
                    <pki:value pki:lang=\"ru\">support@cryptopro.ru</pki:value>
                </pki:rdn-attr>
            </pki:rdn>
        </pki:issuer>
        <pki:validity>
            <pki:notBefore>27.09.2018 19:08:26</pki:notBefore>
            <pki:notAfter>27.12.2018 19:18:26</pki:notAfter>
        </pki:validity>
        <pki:subject pki:count=\"1\">
            <pki:rdn pki:order=\"1\" pki:count=\"1\">
                <pki:rdn-attr pki:order=\"1\" pki:id=\"2.5.4.3\">
                    <pki:name xml:lang=\"ru\">CN</pki:name>
                    <pki:value pki:lang=\"ru\">idonly</pki:value>
                </pki:rdn-attr>
            </pki:rdn>
        </pki:subject>
        <pki:subject-public-key-info>
            <pki:public-key-algorithm>
                <pki:algorithm pki:id=\"1.2.643.2.2.19\">
                    <pki:name xml:lang=\"ru\">ГОСТ Р 34.10-2001</pki:name>
                </pki:algorithm>
                <pki:parameters>
                    <![CDATA[30 12 06 07 2a 85 03 02 02 24 00 06 07 2a 85 03 02 02 1e 01]]>
                </pki:parameters>
            </pki:public-key-algorithm>
            <pki:subject-public-key>
                <pki:value>
                    <![CDATA[04 40 d6 c4 15 66 c2 a5 22 53 38 65 5c 0d 20 60 81 a8 84 fb 21 b0 ea 13 23 e6 cf 6f de 7c 58 64 12 de 72 34 c6 44 4c cd bd a0 d6 d4 f6 63 11 ba b0 f7 5d db 57 7b 58 af 6f 99 4b 57 da de 88 99 88 40]]>
                </pki:value>
            </pki:subject-public-key>
        </pki:subject-public-key-info>
        <pki:extensions pki:count=\"6\">
            <pki:extension pki:order=\"1\" pki:critical=\"no\" id=\"2.5.29.15\">
                <pki:name xml:lang=\"ru\">Использование ключа</pki:name>
                <pki:value xml:lang=\"ru\">
                    <![CDATA[Цифровая подпись, Неотрекаемость, Шифрование ключей, Шифрование данных (f0)]]>
                </pki:value>
            </pki:extension>
            <pki:extension pki:order=\"2\" pki:critical=\"no\" id=\"2.5.29.14\">
                <pki:name xml:lang=\"ru\">Идентификатор ключа субъекта</pki:name>
                <pki:value xml:lang=\"ru\">
                    <![CDATA[fb e3 98 a8 fd 82 3b ea c7 90 df d9 67 11 7a 64 a5 80 c7 b6]]>
                </pki:value>
            </pki:extension>
            <pki:extension pki:order=\"3\" pki:critical=\"no\" id=\"2.5.29.37\">
                <pki:name xml:lang=\"ru\">Улучшенный ключ</pki:name>
                <pki:value xml:lang=\"ru\">
                    <![CDATA[Пользователь Центра Регистрации, HTTP, TLS клиент (1.2.643.2.2.34.6), Проверка подлинности клиента (1.3.6.1.5.5.7.3.2)]]>
                </pki:value>
            </pki:extension>
            <pki:extension pki:order=\"4\" pki:critical=\"no\" id=\"2.5.29.35\">
                <pki:name xml:lang=\"ru\">Идентификатор ключа центра сертификатов</pki:name>
                <pki:value xml:lang=\"ru\">
                    <![CDATA[Идентификатор ключа=15 31 7c b0 8d 1a de 66 d7 15 9c 49 52 97 17 24 b9 01 7a 83]]>
                </pki:value>
            </pki:extension>
            <pki:extension pki:order=\"5\" pki:critical=\"no\" id=\"2.5.29.31\">
                <pki:name xml:lang=\"ru\">Точки распространения списков отзыва (CRL)</pki:name>
                <pki:value xml:lang=\"ru\">
                    <![CDATA[[1]Точка распределения списка отзыва (CRL): Имя точки распространения:Полное имя:URL=http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO%20Test%20Center%202.crl]]>
                </pki:value>
            </pki:extension>
            <pki:extension pki:order=\"6\" pki:critical=\"no\" id=\"1.3.6.1.5.5.7.1.1\">
                <pki:name xml:lang=\"ru\">Доступ к информации о центрах сертификации</pki:name>
                <pki:value xml:lang=\"ru\">
                    <![CDATA[[1]Доступ к сведениям центра сертификации: метод доступа=Поставщик центра сертификации (1.3.6.1.5.5.7.48.2), дополнительное имя=URL=http://testca.cryptopro.ru/CertEnroll/test-ca-2014_CRYPTO-PRO%20Test%20Center%202.crt, [2]Доступ к сведениям центра сертификации: метод доступа=Протокол определения состояния сертификата через сеть (1.3.6.1.5.5.7.48.1), дополнительное имя=URL=http://testca.cryptopro.ru/ocsp/ocsp.srf]]>
                </pki:value>
            </pki:extension>
        </pki:extensions>
        <pki:signed-content>
            <pki:signature-algorithm>
                <pki:algorithm pki:id=\"1.2.643.2.2.3\">
                    <pki:name xml:lang=\"ru\">ГОСТ Р 34.11/34.10-2001</pki:name>
                </pki:algorithm>
            </pki:signature-algorithm>
            <pki:signature-value>
                <pki:value pki:unused-bits=\"0\">
                    <![CDATA[AE 23 FF 85 A0 A7 21 5A 02 FA B4 A3 27 F8 DB 86 77 6A 03 DE B5 7C 55 80 EE 7C 60 E1 60 57 FC 15 BB 11 22 F9 E6 B9 C9 F0 45 32 33 70 FA F7 3D B2 2E 11 5C 92 92 B6 0E CB B0 B3 C0 21 27 06 58 F5]]>
                </pki:value>
            </pki:signature-value>
        </pki:signed-content>
    </pki:certificate>"
    

    Получение списка запросов на отзыв сертификата

    Параметр Значение
    HTTP-метод GET
    Путь https://{{hostname}}/{{instanceName}}/api/certificates/{cert_id}/revokerequests
    Параметры cert_id - идентификатор сертификата
    Возвращаемое значение List<DSSRevRequest> - Список запросов на отзыв сертификата
    HTTP-код Ошибка Описание
    404 Cертификат с указанным ID не найден

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

    GET https://{{hostname}}/{{instanceName}}/api/certificates/15/revokerequests HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1Qi ... FQKc8WFHkugEg
    Host: host
    

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

    HTTP/1.1 200 OK
    Content-Length: 4263
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    
    [{
            "Base64Request": "MIILTAYJKoZIhvcNAQcCoIILPTC ... SPQVB97aK36gqswNYKW3X8NGRK0li+Q==",
            "ID": "6a5c8b4a-52c6-e811-80db-00155d454d12",
            "CertificateAuthorityID": 6,
            "Status": "PENDING",
            "RevInfo": {
                "RevocationReason": "CRL_REASON_CERTIFICATE_HOLD",
                "RevocationDate": "0001-01-01T00:00:00",
                "RevocationComments": "",
                "UnholdDate": "2018-10-25T14:48:00",
                "DistName": null,
                "RequestDate": "2018-10-02T14:48:59",
                "ApproveDate": "0001-01-01T00:00:00",
                "UnholdAction": "U",
                "SignedRequest": null
            }
        }
    ]
    

    Установка сертификата

    Параметр Значение
    HTTP-метод POST
    Путь https://{{hostname}}/{{instanceName}}/api/certificates
    Параметры certificate - BASE64-содержимое сертификата
    Возвращаемое значение DSSCertificate - Сертификат пользователя
    HTTP-код Ошибка Описание
    400 request_not_found Не найден соответствующий сертификату запрос
    400 invalid_certificate_format Некорректный формат входных данных
    400 appropriate_enroll_not_found Не найден соответствующий обработчик УЦ
    400 invalid_request_status Соответствующий запрос не находится в состоянии "Обрабатывается"

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

    POST https://{{hostname}}/{{instanceName}}/api/certificates/ HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8TElfEktxVFCuR27tUg
    Content-Type: application/json; charset=utf-8
    Host: host
    Expect: 100-continue
    
    {"certificate":"MIIC/jCCAq2gAwIBAgITEgAv ..."}
    

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

    HTTP/1.1 200 OK
    Content-Length: 4263
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    
    [{
        "CertificateType": "ServerSide",
        "ID": 2,
        "DName": "CN=Test1",
        "CertificateBase64": "MIIC/jCCAq2gAwIBAgITEgAvWSQcF1NFyPSX5AAAAC9ZJDAIBgYqhQMCAgMwfzEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkNSWVBUTy1QUk8gTExDMSEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDIwHhcNMTgxMTE5MTE0NjAyWhcNMTkwMjE5MTE1NjAyWjAQMQ4wDAYDVQQDEwVUZXN0MTBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4BA0MABEB0PKbSC4qOptWM6iNj+1RSP2KKQEPgJlL+AmbAS01b8+19ztSwPzLzeWcxssHPU34Bkt5JMDbS71yn/1pgAtiTo4IBbTCCAWkwCwYDVR0PBAQDAgTwMB0GA1UdDgQWBBTKDKIrDj/kAdg4a5d6mQBadkDXkTATBgNVHSUEDDAKBggqhQMCAi4ACDAfBgNVHSMEGDAWgBQVMXywjRreZtcVnElSlxckuQF6gzBZBgNVHR8EUjBQME6gTKBKhkhodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL0NSWVBUTy1QUk8lMjBUZXN0JTIwQ2VudGVyJTIwMi5jcmwwgakGCCsGAQUFBwEBBIGcMIGZMGEGCCsGAQUFBzAChlVodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL3Rlc3QtY2EtMjAxNF9DUllQVE8tUFJPJTIwVGVzdCUyMENlbnRlciUyMDIuY3J0MDQGCCsGAQUFBzABhihodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9vY3NwL29jc3Auc3JmMAgGBiqFAwICAwNBAFPsyyX3s39AVo786Fuc/jYmaFG7y/RUEPygviWtygbbl9Ix9h3qo5Sh7XOT/PIyEVC13/9DnP4wtBffEh2tHvg=",
        "Status": {
            "Value": "ACTIVE",
            "RevocationInfo": null,
            "PinCode": null,
            "ActiveCertId": 0
        },
        "IsDefault": false,
        "CertificateAuthorityID": 11,
        "CspID": "332101a9-4aca-4f89-94fc-9eb771b2588c",
        "HashAlgorithms": [
            "GOST R 34.11-94"
        ],
        "ProviderName": null,
        "ProviderType": 0,
        "PrivateKeyNotBefore": null,
        "PrivateKeyNotAfter": null,
        "HasPin": false,
        "FriendlyName": ""
    }
    ]
    

    Назначение сертификата по умолчанию

    Параметр Значение
    HTTP-метод POST
    Путь https://{{hostname}}/{{instanceName}}/api/certificates/{cert_id}/default
    Параметры cert_id - идентификатор сертификата
    DefaultProperty - Данные для назначения сертификата по умолчанию
    Возвращаемое значение Метод не имеет возвращаемого значения
    HTTP-код Ошибка Описание
    404 Cертификат с указанным ID не найден

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

    POST https://{{hostname}}/{{instanceName}}/api/certificates/15/default HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJh ... 8TElfEktxVFCuR27tUg
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 16
    Expect: 100-continue
    
    {"Default":true}
    

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

    HTTP/1.1 200 OK
    Content-Length: 0
    Server: Microsoft-IIS/7.5
    

    Назначение дружественного имени

    Параметр Значение
    HTTP-метод POST
    Путь https://{{hostname}}/{{instanceName}}/api/certificates/{cert_id}/friendlyname
    Параметры cert_id - идентификатор сертификата
    FriendlyNameProperty - Данные для назначения дружественного имени
    Возвращаемое значение Метод не имеет возвращаемого значения
    Примечание

    Дружественное имя должно быть уникально среди всех сертификатов пользователя.

    HTTP-код Ошибка Описание
    404 Cертификат с указанным ID не найден
    400 duplicate_friendly_name Указанное дружественно имя уже назначено
    400 invalid_frinendly_name_length Длина дружественного имени больше 255 символов

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

    POST https://{{hostname}}/{{instanceName}}/api/certificates/15/friendlyname HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJK ... d0KhU_-Qz8jgDFlcfU_RMA
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 32
    Expect: 100-continue
    
    {"FriendlyName":"Friendly Name"}
    

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

    HTTP/1.1 200 OK
    Content-Length: 0
    Server: Microsoft-IIS/7.5
    

    Отзыв сертификата

    Параметр Значение
    HTTP-метод POST, PATCH
    Путь https://{{hostname}}/{{instanceName}}/api/certificates/{cert_id}/status
    Параметры cert_id - идентификатор сертификата
    CertificateStatus - параметры отзыва сертификата
    Возвращаемое значение Метод не имеет возвращаемого значения

    При отзыве сертификата в поле Value должно быть указано значение 2 (REVOKED)

    В структуре RevocationInfo необходимо заполнить следующие поля:

    • RevocationReason - причину отзыва сертификата CertRevokeReasonEnum
    • RevocationDate (опционально) - дату отзыва, если требуется отозвать сертификат в будущем
    • RevocationComments (опционально) - комментарий

    Формат даты RevocationDate - yyyy-MM-dd hh:mm:ss (0001-01-01 00:00:00) или yyyy-MM-ddThh:mm:ss (0001-01-01T00:00:00).

    Запрос на отзыв может быть подписан действующим сертификатом пользователя. В этом случае необходимо заполнить поля ActiveCertId и PinCode.

    Примечание

    Подпись запросов на отзыв возможна только если в настройках модуля интеграции с УЦ 2.0 выставлен флаг AllowUserMode. Настройку должен выполнить Администратор.

    HTTP-код Ошибка Описание
    404 Cертификат с указанным ID не найден
    500 Сертификат уже был отозван.
    Внутренняя ошибка сервиса
    400 invalid_parameters Невалидные параметры запроса
    400 invalid_certificate_status Повторный отзыв сертификата

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

    POST https://{{hostname}}/{{instanceName}}/api/certificates/16/status HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJ ... VCgDbAc5XLyjt0pwkET7I2fg
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 228
    Expect: 100-continue
    
    {
        "Value": 2,
        "RevocationInfo": {
            "RevocationReason": 1,
           "RevocationComments":"Comment"
        }
    }
    

    Запрос с указанием даты отзыва:

    POST https://{{hostname}}/{{instanceName}}/api/certificates/16/status HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJ ... VCgDbAc5XLyjt0pwkET7I2fg
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 228
    Expect: 100-continue
    
    {
        "Value": 2,
        "RevocationInfo": {
            "RevocationReason": 1,
           "RevocationComments":"Comment",
           "RevocationDate":"2018-10-05T12:58"
        }
    }
    

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

    HTTP/1.1 200 OK
    Content-Length: 0
    Server: Microsoft-IIS/7.5
    

    Конечная точка Documents

    Внимание!

    Данная конечная точка работает только в режиме обратной совместимости и НЕ поддерживает подтверждение операций.

    Конечная точка /documents предоставляет следующие методы:

    • Зашифрование документа
    • Расшифрование документа
    • Разбор зашифрованного документа
    • Усовершенствование подписи
    • Хэширование документа

    Примеры подписи приведены в разделе Примеры запросов на создание подписи

    Зашифрование документа

    Параметр Значение
    HTTP-метод POST
    Путь https://{{hostname}}/{{instanceName}}/api/documents/encrypt
    Параметры Document - Информация о документе
    Возвращаемое значение string - Зашифрованный документ в кодировке Base64
    Примечание

    В структуре Document должно быть заполнено поле Encryption

    Типовые ошибки

    HTTP-код Ошибка Описание
    400 parameters_required Не заполнено поле Encryption
    400 content_required Не передан документ для зашифрования
    400 invalid_content Неправильный формат документа (например, в случае XML шифрования, необходимо передать корректный xml-документ)
    400 invalid_recipients Сертификаты получателей не заданы или невалидны
    500 An error has occurred Внутренняя ошибка сервера

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

    Запрос

    POST https://{{hostname}}/{{instanceName}}/api/documents/encrypt HTTP/1.1
    Authorization: Bearer eyJ0eXAiOi ... P9RY0lwn-r5HGc7ZyTQ
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 1827
    
    {
        "Content": "PHJvb3Q+P ... ZT48L3Jvb3Q+",
        "Encryption": {
            "Type": 1,
            "Parameters": {},
            "Certificates": [ "MIIE7DC ... 4oXwmndTQ==" ]
        }
    }
    

    Ответ

    HTTP/1.1 200 OK
    Content-Length: 3543
    Content-Type: application/json; charset=utf-8
    
    "PEVuY3J5 ... J5cHRlZERhdGE+"
    

    Поиск подходящих сертификатов для расшифрования

    Метод /decrypt/parse должен быть использован, если пользователь не знает заранее идентификатор сертификата для расшифрования. Результатом работы метода будет список идентификаторов сертификатов пользователя.

    Параметр Значение
    HTTP-метод POST
    Путь https://{{hostname}}/{{instanceName}}/api/documents/decrypt/parse
    Параметры Document - Информация о документе
    Возвращаемое значение List - Список идентификаторов сертификатов пользователя

    Типовые ошибки

    HTTP-код Ошибка Описание
    400 content_required Не передан документ для расшифрования
    400 invalid_content Неправильный формат документа (например, в случае XML шифрования, необходимо передать корректный xml-документ)
    400 certificate_not_found Не найден сертификат для расшифрования
    400 invalid_certificate Указан неверный идентификатор сертификата
    400 invalid_pin Указан неверный ПИН-код
    500 An error has occurred Внутренняя ошибка сервера

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

    Запрос на получение идентификаторов сертификатов для расшифрования

    POST https://{{hostname}}/{{instanceName}}/api/documents/decrypt/parse HTTP/1.1
    Authorization: Bearer eyJ0eXAiOi ... P9RY0lwn-r5HGc7ZyTQ
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 3597
    
    {
        "Content": "PEVuY3J5 ... J5cHRlZERhdGE+",
        "Decryption": {
            "Type": 1,
            "CertificateId": 0
        }
    }
    

    Ответ

    HTTP/1.1 200 OK
    Content-Length: 5
    Content-Type: application/json; charset=utf-8
    
    [680]
    

    Усовершенствование подписи

    Параметр Значение
    HTTP-метод POST
    Путь https://{{hostname}}/{{instanceName}}/api/documents/enhancesignature
    Параметры Document - Информация о документе
    Возвращаемое значение string - Подписанный документ в кодировке Base64
    Примечание

    В структуре Document должно быть заполнено поле Signature.

    Типовые ошибки

    HTTP-код Ошибка Описание
    400 invalid_signature_params Неверно указаны параметры подписи
    400 content_required Не передан документ для подписания
    400 tsp_error Ошибка получения штампа времени
    400 ocsp_error Ошибка получения OCSP-ответа
    400 cert_chain_error Ошибка построения цепочки сертификата
    400 invalid_cert Ошибка проверки сертификата
    400 invalid_content Невалидный формат подписи
    500 An error has occurred Внутренняя ошибка сервера
    Примеры запросов

    Запрос

    POST https://dss.cryptopro.ru...cuments/enhancesignature HTTP/1.1
    Authorization: Bearer eyJ0eXAiOi ... P9RY0lwn-r5HGc7ZyTQ
    Content-Type: application/json; charset=utf-8
    Host: host
    {
        "Content":"signature",
        "Signature":
        {
            "Type":2,
            "Parameters":
            {
                "CADESType":"XLT1",
                "TSPAddress":"https://dss-ca20-w12r2/tsp/tsp.srf"
            }
        }
    }
    

    Ответ

    HTTP/1.1 200 OK
    Content-Length: 3543
    Content-Type: application/json; charset=utf-8
    
    "YwZTUwYTJiM2E4MD ... 3de9sjgg"
    

    Хэширование документа

    Параметр Значение
    HTTP-метод POST
    Путь https://{{hostname}}/{{instanceName}}/api/documents/hash
    Параметры Document - Информация о документе
    Возвращаемое значение string - Хэш-значение документа в кодировке Base64
    Примечание

    Хэширование документа работает только в поточном режиме. Подробнее о поточной обработке данных см. Потоковая обработка

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