Команда certrequests API КриптоАРМ — запрос на сертификат - Документация для КриптоАРМ 6
Перейти к содержанию

Команда certrequests#

Команда создаёт запрос на сертификат в формате PKCS#10. Сервис передаёт шаблон запроса, а алгоритм, контейнер и доступные поля пользователь проверяет в обычной форме создания запроса.

Содержание:


Общая информация#

Поддерживается единственная операция — GENERATE. Создание самоподписанного сертификата через эту команду недоступно.


Формат ссылки#

cryptoarm://certrequests/<URL>?id=<id>

Формат локального вызова описан в разделе Формат ссылки для локального вызова.


Параметры#

Поле Значение
operation GENERATE
props.headerText Необязательный заголовок; длиннее 40 символов сокращается
props.descriptionText Необязательное описание; длиннее 120 символов сокращается
props.templateType JSONTemplate или CertificateTemplate — шаблон по сертификату
props.template Объект шаблона выбранного типа
props.uploader Адрес получателя результата: HTTPS или file:// для локального вызова
props.returnFiles Передавать ли запрос получателю; по умолчанию true
localResultParams.savePath Каталог результата локального вызова; без него и без props.uploader результат в файл не записывается

Шаблон по сертификату без certificateBase64 открывает пустую форму запроса: пользователь заполняет её сам.


Шаблон JSONTemplate#

{
  "jsonrpc": "2.0",
  "id": "tx-csr",
  "result": {
    "operation": "GENERATE",
    "props": {
      "templateType": "JSONTemplate",
      "template": {
        "Description": "Сертификат для электронной подписи",
        "RDN": [
          {
            "Oid": "2.5.4.3",
            "LocalizedName": "Имя владельца",
            "DefaultValue": "Example User",
            "Length": 64,
            "ProhibitEmpty": true,
            "ProhibitChange": false
          }
        ],
        "Extensions": {
          "KeyUsage": [{ "Name": "digitalSignature", "DefaultValue": true }],
          "ExtendedKeyUsage": [{ "Name": "1.3.6.1.5.5.7.3.2", "DefaultValue": true }]
        },
        "MarkExportable": false
      }
    }
  }
}

Поля шаблона:

Поле Описание
Description Описание над формой, если не задан props.descriptionText
RDN[] Поля владельца
Extensions.KeyUsage[] Назначения ключа
Extensions.ExtendedKeyUsage[] Расширенные назначения ключа, OID
MarkExportable Начальное значение экспортируемости контейнера
CREncoding DER или BASE-64; по умолчанию BASE-64

Имена полей шаблона сравниваются без учёта регистра.


Параметры ключа и расширения#

Значение настройки в Extensions задаётся строкой либо объектом с полями DefaultValue и ProhibitChange. При ProhibitChange: true текстовое поле показывается без возможности изменения.

Поле Описание
provider, algorithm, keyLength Начальные значения: CRYPTOPRO или SYSTEM, gost2012, RSA или EC, длина ключа
IdentificationKind Способ идентификации владельца: 0–3; 4 — не указан
subjectSignTool Средство электронной подписи владельца; без него — установленный КриптоПро CSP
issuerSignTool Средство ЭП и УЦ издателя: четыре значения через \n
certificatePolicies OID класса средства ЭП; без него — класс установленного КриптоПро CSP; другой OID добавляется к дополнительным политикам
additionalCertificatePolicies Дополнительные политики, OID через ;
subjectAltName Альтернативные имена владельца через ;, например dnsName=example.ru;dnsName=www.example.ru
customEKU Дополнительные расширенные назначения ключа, OID через ;
privateKeyUsagePeriod Срок использования закрытого ключа в секундах от момента создания запроса
certificateTemplate OID шаблона сертификата, по которому УЦ выбирает профиль сертификата
extensionsOID OID атрибута, в который упаковываются расширения

Если provider не задан, а КриптоПро CSP установлен, запрос создаётся на ключе ГОСТ Р 34.10-2012. Если шаблон требует CRYPTOPRO, а КриптоПро CSP не установлен, используется системный провайдер. Способ идентификации, средства ЭП, политики, срок ключа и OID шаблона сертификата записываются в запрос только для ключа КриптоПро.


Поля владельца#

Поле Oid принимает как OID в точечной записи, так и распространённые сокращения: CN, SN, GN или G, O, OU, T или TITLE, L, S или ST, STREET, C, E или EMAILADDRESS, OGRN, OGRNIP, SNILS, INN, INNLE.

Для каждого поля поддерживаются:

Свойство Описание
DefaultValue Начальное значение
LocalizedName Название поля в интерфейсе
ProhibitEmpty Поле обязательно для заполнения
ProhibitChange Значение нельзя изменить
SettingsValues и ProhibitAnyValue Ограниченный список допустимых значений
Length Максимальная длина значения

Назначения ключа#

В KeyUsage поддерживаются: digitalSignature, nonRepudiation (синоним contentCommitment), keyEncipherment, dataEncipherment, keyAgreement, keyCertSign, cRLSign, encipherOnly, decipherOnly.

Элемент может быть строкой либо объектом с полями Name, DefaultValue, ProhibitChange и LocalizedName. В ExtendedKeyUsage поле Name содержит OID в точечной записи.


Шаблон по сертификату#

Чтобы построить шаблон по существующему сертификату, передайте его в формате DER, закодированном в Base64:

{
  "jsonrpc": "2.0",
  "id": "tx-csr",
  "result": {
    "operation": "GENERATE",
    "props": {
      "templateType": "CertificateTemplate",
      "template": {
        "certificateBase64": "<DER Base64>"
      }
    }
  }
}

Поля владельца, назначения ключа и расширенные назначения исходного сертификата становятся заблокированными значениями шаблона.


Результат#

После подтверждения параметров и создания ключа приложение отправляет:

{
  "jsonrpc": "2.0",
  "method": "certrequests.base64",
  "params": {
    "id": "tx-csr",
    "certificaterequestBase64": "<Base64 файла запроса>",
    "friendlyName": ""
  }
}

Если задан props.uploader, результат уходит только туда, методом certrequests.outDirectResults:

{
  "jsonrpc": "2.0",
  "method": "certrequests.outDirectResults",
  "params": {
    "id": "tx-csr",
    "status": "Completed",
    "directResults": [{ "out": "<Base64 файла запроса>", "friendlyName": "" }]
  }
}

При returnFiles: false поле out не передаётся. Адрес uploader на другом ресурсе требует собственного подтверждения доверия. Для локального вызова uploader вида file:// задаёт каталог, в который записывается direct-result-<id>.json с тем же содержимым.

Если пользователь отменил создание запроса, сервис получает certrequests.parameters со статусом Canceled и ErrorDescription: "Access denied".

certificaterequestBase64 — файл запроса в Base64. По умолчанию запрос записывается в PEM, поэтому внутри Base64 находится текст -----BEGIN CERTIFICATE REQUEST-----; при CREncoding: "DER" — двоичный DER. Шаблон по сертификату всегда даёт PEM. Поле friendlyName для запроса пустое.

Для сетевого вызова результат уходит на адрес исходного вызова; локальный вызов сохраняет конверт в файл certrequests-<id>.json в каталоге localResultParams.savePath.


Смотрите также#

Для повышения удобства работы и хранения данных веб-сайт CRYPTOARM.RU использует файлы COOKIE. Продолжая работу с веб-сайтом, Вы даете свое согласие на работу с этими файлами.