Show / Hide Table of Contents

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

    Параметры выпуска запроса на сертификат можно получить из Политики Сервиса Подписи (метод /policy). Политика Сервиса Подписи содержит:

    • Список параметров Удостоверяющих Центров, подключенных к DSS
    • Список криптопровайдеров, подключенных к DSS

    Каждый элемент списка параметров УЦ содержит:

    • Идентификатор Удостоверяющего Центра
    • Тип Удостоверяющего Центра
    • Шаблон различительного имени (Distinguished Name)
    • Список шаблонов сертификатов
    • Отображаемое имя

    В интерфейсе интегрируемой системы должна быть возможность выбора Удостоверяющего Центра, для которого будет создан запрос на сертификат. Для каждого Удостоверяющего Центра Сервис Подписи передаёт отображаемое имя (DSSCAPolicy -> Name), которое может быть показано пользователю.

    Для выбранного пользователем Удостоверяющего Центра в интерфейсе интегрируемой системы должна отображаться форма для заполнения Идентифицирующих данных. Форма составляется в соответстии с шаблоном имени (DSSCAPolicy -> NamePolicy). У каждого компонента имени в шаблоне есть отображаемое имя (Name), строковый идентификатор (StringIdentifier) и требование к заполнению (IsRequired).

    Так же на форме создания запроса должен быть отображен спискок шаблонов сертификатов (EkuTemplates). Каждый шаблон сертификата имеет отображаемое имя.

    Если Политика Сервиса Подписи содержит более одного криптопровайдера, то необходимо предоставить пользователю возможность выбора.

    Данные с формы передаются в метод /requests для создания запроса на сертификат:

    • Идентификатор Удостоверяющего Центра
    • Различительное имя
    • Шаблон сертификата
    • ПИН-код на закрытый ключ (опционально)
    • Идентификатор криптопровайдера (опционально)

    Данные передаются в структуре CertificateRequest.

    Идентификатор Удостоверяющего Центра (AuthorityId) является константой. Он может быть получен от Администратора DSS и зафиксирован в настройках интегрируемой системы.

    Примечание

    Если Удостоверяющий Центр с заданным идентификатором отсутствует в Политике Сервиса Подписи, то либо он недоступен в данный момент, либо был отключен Администратором DSS. Для выяснения причин недоступности Удостоверяющего Центра следует обратиться к Администратору DSS.

    Различительное имя может быть передано в двух форматах:

    • Список пар oid:value (DistinguishedName)
    • Строковое представление (RawDistinguishedName)

    Объектные идентификаторы (OID) компонентов имени указаны в шаблоне имени.

    Примечание

    Строковое представление различительного имени кодируется согласно RFC 1779.

    Шаблон сертификата представляет собой набор объектных идентификаторов, которые попадут в расширение Enhanced Key Usage (EKU) запроса на сертификат, или идентификатор шаблона сертификата КриптоПро УЦ 2.0, который попадёт в расширение Certificate Template (1.3.6.1.4.1.311.21.7).

    Шаблон передаётся через разные поля запроса на сертификат в зависимости от типа:

    • Enhanced key usage - передаётся в дополнительных параметрах запроса Parameters в ключе EkuString в формате oid1,oid2,...,oidN.
    Примечание

    Данный шаблон используется при создании запроса на сертификат к Удостоверяющему Центру типа 0 (КриптоПро УЦ 1.5) и 2 (Сторонний УЦ).

    • Certificate Template - передаётся в параметре Template запроса на сертификат.
    Примечание

    Данный шаблон используется при создании запроса на сертификат к Удостоверяющему Центру типа 1 (КриптоПро УЦ 2.0) и 2 (Сторонний УЦ).

    Идентификатор криптопровайдера должен быть задан, если в Политике Сервиса Подписи доступно более одного криптопровайдера. Идентификатор криптопровайдера (DSSCSPPolicy -> GroupId) передаётся в дополнительных параметрах запроса в ключе GroupId

    Создание запроса на сертификат с подтверждением при помощи вторичной аутентификации

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

    • Создание транзакции на Сервисе Подписи
    • Подтверждение транзакции на Сервисе Подтверждения Операций
    • Получение результата операции на Сервисе Подписи

    При этом в массив параметров транзакции метода /transactions должны быть отображены следующие поля запроса на сертификат:

    CertificateRequest Параметры транзакции
    AuthorityId CAId
    PinCode Не используется
    Template CertTemplateOid
    DistinguishedName Не используется
    RawDistinguishedName CertSubjectName
    Parameters ->EkuString EkuString
    Parameters ->GroupId GroupId
    Примечание

    При создании запроса на сертификат с подтверждением с подтверждением при помощи вторичной аутентификации различительное имя может быть передано только в строковом представлении.

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

    Пример запроса с указанием различительного имени в строковом представлении:

    POST https://host/SignServer/rest/api/requests HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGci ... 2bgrniEg
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 153
    Expect: 100-continue
    
    {
        "AuthorityId":11,
        "PinCode":"",
        "RawDistinguishedName":"CN=dssUser,C=RU",
        "Parameters":
            {"EkuString":"1.2.643.2.2.34.2,1.2.643.2.2.34.4,1.3.6.1.5.5.7.3.2"}
    }
    

    Пример запроса с указанием различительного имени в виде набора компонентов:

    POST https://host/SignServer/rest/api/requests HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJ ... PhYmXscTmwGkD8b1SWy0nYQ
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 169
    Expect: 100-continue
    
    {
        "AuthorityId":11,
        "PinCode":"",
        "DistinguishedName":{"2.5.4.3":"dssUser","2.5.4.6":"RU"},
        "Parameters":
            {
                "EkuString":"1.2.643.2.2.34.2,1.2.643.2.2.34.4,1.3.6.1.5.5.7.3.2"
            }
    }
    

    Пример запроса с указанием шаблона сертификата:

    POST https://host/SignServer/rest/api/requests HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV ... Ysj1GpIVmR2hw
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 135
    Expect: 100-continue
    
    {
        "AuthorityId":11,
        "PinCode":"",
        "Template":"1.3.6.1.5.5.7.3.2",
        "DistinguishedName":{"2.5.4.3":"dssUser","2.5.4.6":"RU"},
        "Parameters":{}}
    

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

    HTTP/1.1 200 OK
    Content-Length: 723
    Content-Type: application/json; charset=utf-8
    Server: Microsoft-IIS/7.5
    Date: Tue, 04 Sep 2018 13:35:02 GMT
    
    {
        "CertificateType":"ServerSide",
        "Base64Request":"MIIBQDCB8AIBADAfMQswCQYD ... iOibLabDHz2VYlG8CsaxjE",
        "CertificateAuthorityID":11,
        "CADisplayName":null,
        "DistName":"CN=dssUser, C=RU",
        "Subject":"dssUser",
        "Status":"PENDING",
        "ID":22,
        "CARequestID":null,
        "CertificateID":0,
        "RequestType":"Certificate",
        "GroupID":"e8e67f9e-7eed-4116-ad98-20582e4d766e"}
    

    Запрос на сертификат с подтверждением с подтверждением при помощи вторичной аутентификации:

    POST https://host/SignServer/rest/api/transactions HTTP/1.1
    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGci ... pz4erYJpgoN_RgQLA
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 200
    Expect: 100-continue
    
    {
    "OperationCode":16,
    "Parameters":
    [
        {"Name":"CertSubjectName","Value":"CN=dssUser,C=RU"},
        {"Name":"CAId","Value":"11"},
        {"Name":"EkuString","Value":"1.2.643.2.2.34.2,1.2.643.2.2.34.4,1.3.6.1.5.5.7.3.2"}
    ]}
    

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

    HTTP-код Ошибка Описание
    400 pending_requests_exist У пользователя есть необработанный запрос на сертификат (статус PENDING).

    Обработка ответа Сервиса Подписи

    При успешном создании запроса на сертификат Сервис Подписи в ответе вернёт структуру DSSCertRequest.

    Дальнейшее поведение пользователя зависит от значения поля Status в структуре DSSCertRequest и типа УЦ, на котором создавался запрос на сертификат.

    ACCEPTED - запрос на сертификат принят и обработан УЦ. В данном случае в поле CertificateID будет записан идентификатор выпущенного сертификата.

    REGISTRATION - запрос на сертификат принят в КриптоПро УЦ 2.0 и находится на этапе регистрации пользователя УЦ. В зависимости от настроек подключения DSS к КриптоПро УЦ 2.0, необходимо:

    • ожидать одобрения запроса на сертификат Администратором УЦ;
    • одобрить запрос Оператором DSS.

    PENDING - запрос на сертификат находится в обработке. Если запрос отправлен на КриптоПро УЦ 2.0, то в зависимости от настроек подключения DSS к КриптоПро УЦ 2.0 необходимо:

    • ожидать одобрения запроса на сертификат Администратором УЦ;
    • одобрить запрос Оператором DSS.

    Если запрос создавался через "Сторонний Удостоверяющий Центр", необходимо:

    • скачать запрос на сертификат по идентификатору /requests;
    • передать запроса на сертификат в УЦ;
    • выпущенный сертификат установить в DSS.

    Запрос на сертификат (PKCS#10) в формате Base64 содержится в поле Base64Request структуры DSSCertRequest.

    REJECTED - запрос отклонён. Дальнейшая обработка запроса невозможна. Для выяснения причин отклонения запроса необходимо обратиться к Администратору УЦ.

    Back to top © ООО "КРИПТО-ПРО", 2000-2020