Команда certrequests#
Команда создаёт запрос на сертификат в формате PKCS#10. Сервис передаёт шаблон запроса, а алгоритм, контейнер и доступные поля пользователь проверяет в обычной форме создания запроса.
Содержание:
- Общая информация
- Формат ссылки
- Параметры
- Шаблон JSONTemplate
- Параметры ключа и расширения
- Поля владельца
- Назначения ключа
- Шаблон по сертификату
- Результат
- Смотрите также
Общая информация#
Поддерживается единственная операция — GENERATE. Создание самоподписанного сертификата через эту команду недоступно.
Формат ссылки#
Формат локального вызова описан в разделе Формат ссылки для локального вызова.
Параметры#
| Поле | Значение |
|---|---|
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.
Смотрите также#
- Описание и возможности API — общий формат вызова.
- Команда certificates — установка выпущенного сертификата.
- Создание запроса и самоподписанного сертификата — та же операция в интерфейсе.