Конечная точка Requests
Конечная точка requests предоставляет следующие методы:
- Создание запроса на сертификат
- Получение списка запросов на сертификат
- Получение запроса на сертификат по идентификатору
- Удаление запроса на сертификат по идентификатору
- Получение содержимого запроса на сертификат
- Одобрение и отклонение запроса на сертификат
- Одобрение и отклонение запроса на аннулирование/приостановление/возобновление
Создание запроса на сертификат
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | https://dss.cryptopro.ru/SignServer/rest/api/v2/requests |
Параметры | CreateCertificateRequestOperationInput - Запрос на создание сертификата |
Возвращаемое значение | OperationInfo - Результат операции |
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
400 | pending_requests_exist | У пользователя есть необработанные запросы на сертификат |
400 | invalid_enroll | Модуль УЦ с указанным идентификатором не найден |
400 | invalid_template | Запрос не содержит валидного шаблона сертификата |
400 | invalid_subject_name | Не задан обязательный компонент имени субъекта |
Подробнее о выпуске запроса на сертификат смотреть раздел: Выпуск сертификата
Пример запроса
POST /SignServerClient/rest/api/v2/requests HTTP/1.1
Host: hostname
Content-Type: application/json
Authorization: Bearer eyJ0eXAiOiJKV ... _JzQqlMp69DVgQFg_Q
Content-Length: 228
{
"AuthorityId":2,
"PinCode":"",
"DistinguishedName":{"2.5.4.3":"Jared Murphy DVM","2.5.4.6":"RU"},
"Parameters":{
"TemplateOid":"1.2.643.2.2.50.1.9.16527438.14395276.12208347.4971100.25941.39364"
}
}
Пример ответа
{
"Operation": {
"Id": null,
"Result": {
"CertificateType": "ServerSide",
"Storage": "Server",
"Base64Request": "MIIBXDCCAQkCAQAwJTELMAkGA1UEBhMCUlUxFjAUBgNVBAMTDVl2b25uZSBIaXJ0aGUwZjAfBggqhQMHAQEBATATBgcqhQMCAiQABggqhQMHAQECAgNDAARASFv6ULuXT8X4ndYs8V4RiD0Z/DVWUH6FCIo8O0jRS7zkEyRo2+VcLTpF0riXNVKFRXizzB7G3BJoW5N8WV63xqB1MHMGCisGAQQBgjcCAQ4xZTBjMAsGA1UdDwQEAwIE8DAdBgNVHQ4EFgQUSR7S1ethA7vtYTrquPBgz10u3EswNQYJKwYBBAGCNxUHBCgwJgYeKoUDAgIyAQmH8OBOhu7PDIXpkVuCr7RcgcpVgrNEAgEBAgEAMAoGCCqFAwcBAQMCA0EAkHbqYx0T8PSwYpuF0n/q6n2yk6+0fxxxk10Bs4aq3rKPgLVMwVEoWXApnGpcpgvg7RsRb43urDQ2gWcBiXyHVg==",
"CertificateAuthorityID": 2,
"CADisplayName": null,
"DistName": "CN=Yvonne Hirthe, C=RU",
"Subject": "Yvonne Hirthe",
"Status": "PENDING",
"ID": 13236,
"CARequestID": null,
"CertificateID": 0,
"RequestType": "Certificate",
"GroupID": "07d4e7c3-417d-49d6-9f91-b345c853438f"
},
"Status": "Completed",
"Error": null,
"ErrorDescription": null,
"ExpirationDate": 1645979561
}
}
Пример ответа с запросом подтверждения
{
"Operation": {
"Id": "df2c2226-b4ad-4449-85e3-a42e6655431d",
"Result": null,
"Status": "Created",
"Error": null,
"ErrorDescription": null,
"ExpirationDate": 1645980047
}
}
Получение списка запросов на сертификат
Параметр | Значение |
---|---|
HTTP-метод | GET |
Путь | https://dss.cryptopro.ru/SignServer/rest/api/v2/requests |
Параметры | Метод не имеет параметров |
Возвращаемое значение | List<DSSCertRequest> - Список созданных запросов на сертификат |
Примечание
Для получения списка запросов на аннулирование/приостановление/возобновление используйте метод /certificates/{key}/revokerequests. Список запросов на аннулирование, приостановление и возобновление сертификата может быть получен только для сертификата, выпущенного через модуль интеграции с КриптоПро УЦ 2.0.
Пример запроса
GET https://host/SignServer/rest/api/v2/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": "ClientSide",
"Storage": "Mobile",
"Base64Request": "MIIBOzCB6QIBADAkMQswCQYDVQQGEwJSVTEVMBMGA1UEAxMMSXJlbmUgSGVsbGVyMGYwHwYIKoUDBwEBAQEwEwYHKoUDAgIkAAYIKoUDBwEBAgIDQwAEQEhlt31eJSEc/oDVRvnHVl56//UNacZ5GAP7/HlDZqjXJrEgt59ji6lAF1hGJQ/iqsDyMHcDrlvAPxwAIMk5fyWgVjBUBgorBgEEAYI3AgEOMUYwRDALBgNVHQ8EBAMCBPAwNQYJKwYBBAGCNxUHBCgwJgYeKoUDAgIyAQmH8OBOhu7PDIXpkVuCr7RcgcpVgrNEAgEBAgEAMAoGCCqFAwcBAQMCA0EAEuEDF+OALFdbM4mYyUHwl45lG2FS9Q6OyMCrjvdjimUoIR/kr6qLQkJmiZ4vATy26umALeAMz/kooKGe+W8qJw==",
"CertificateAuthorityID": 1,
"CADisplayName": null,
"DistName": "CN=Irene Heller, C=RU",
"Subject": "Irene Heller",
"Status": "ACCEPTED",
"ID": 13222,
"CARequestID": "cdf39b67-d9a4-4029-a41f-ae4801276378",
"CertificateID": 12160,
"RequestType": "Certificate",
"GroupID": "b3c2d004-48dd-4c40-826f-43928f3729b6"
},
{
"CertificateType": "ServerSide",
"Storage": "Server",
"Base64Request": "MIIBXjCCAQsCAQAwJzELMAkGA1UEBhMCUlUxGDAWBgNVBAMTD1ZpY2tpIFBvbGxpY2ggVjBmMB8GCCqFAwcBAQEBMBMGByqFAwICJAAGCCqFAwcBAQICA0MABECD28Rc6WzcHY2Snm7JvjZWfvHiYI2/N5Rbh9bWagsVJupy+ShYHo8PBf6/YNWp72p0qvy8iZp2hT1IP8zDQWjfoHUwcwYKKwYBBAGCNwIBDjFlMGMwCwYDVR0PBAQDAgTwMB0GA1UdDgQWBBT9lf03+mtSVtUK0zB9S+bGGjeHgjA1BgkrBgEEAYI3FQcEKDAmBh4qhQMCAjIBCYfw4E6G7s8MhemRW4KvtFyBylWCs0QCAQECAQAwCgYIKoUDBwEBAwIDQQDEqTOmyvxsfqp0/hDWG5IZp3K+GtwsN13nCpGsTQpSFhiyx4QZAMc/Fs3JSbOEVEBR9G8W+GAWlQpHHg2CgKy2",
"CertificateAuthorityID": 1,
"CADisplayName": null,
"DistName": "CN=Vicki Pollich V, C=RU",
"Subject": "Vicki Pollich V",
"Status": "ACCEPTED",
"ID": 13235,
"CARequestID": "a4c9064e-eb02-493e-9416-ae4801694a81",
"CertificateID": 12173,
"RequestType": "Certificate",
"GroupID": "07d4e7c3-417d-49d6-9f91-b345c853438f"
}
]
Получение запроса на сертификат по идентификатору
Параметр | Значение |
---|---|
HTTP-метод | GET |
Путь | https://dss.cryptopro.ru/SignServer/rest/api/v2/requests/{req_id} |
Параметры | Идентификатор запроса на сертификат |
Возвращаемое значение | DSSCertRequest - запрос на сертификат |
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
404 | Запрос на сертификат с указанным ID не найден |
Пример запроса
GET https://host/SignServer/rest/api/v2/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",
"Storage": "Server",
"Base64Request": "MIIBXjCCAQsCAQAwJzELMAkGA1UEBhMCUlUxGDAWBgNVBAMTD1ZpY2tpIFBvbGxpY2ggVjBmMB8GCCqFAwcBAQEBMBMGByqFAwICJAAGCCqFAwcBAQICA0MABECD28Rc6WzcHY2Snm7JvjZWfvHiYI2/N5Rbh9bWagsVJupy+ShYHo8PBf6/YNWp72p0qvy8iZp2hT1IP8zDQWjfoHUwcwYKKwYBBAGCNwIBDjFlMGMwCwYDVR0PBAQDAgTwMB0GA1UdDgQWBBT9lf03+mtSVtUK0zB9S+bGGjeHgjA1BgkrBgEEAYI3FQcEKDAmBh4qhQMCAjIBCYfw4E6G7s8MhemRW4KvtFyBylWCs0QCAQECAQAwCgYIKoUDBwEBAwIDQQDEqTOmyvxsfqp0/hDWG5IZp3K+GtwsN13nCpGsTQpSFhiyx4QZAMc/Fs3JSbOEVEBR9G8W+GAWlQpHHg2CgKy2",
"CertificateAuthorityID": 1,
"CADisplayName": null,
"DistName": "CN=Vicki Pollich V, C=RU",
"Subject": "Vicki Pollich V",
"Status": "ACCEPTED",
"ID": 13235,
"CARequestID": "a4c9064e-eb02-493e-9416-ae4801694a81",
"CertificateID": 12173,
"RequestType": "Certificate",
"GroupID": "07d4e7c3-417d-49d6-9f91-b345c853438f"
}
Удаление запроса на сертификат по идентификатору
Параметр | Значение |
---|---|
HTTP-метод | DELETE |
Путь | https://dss.cryptopro.ru/SignServer/rest/api/v2/requests/{req_id} |
Параметры | Идентификатор запроса на сертификат |
Возвращаемое значение | Метод не имеет возвращаемого значения |
Примечание
Если запрос на сертификат с указанным идентификатором не найден, сервис вернёт HTTP-код 200.
Пример запроса
DELETE https://host/SignServer/rest/api/v2/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://dss.cryptopro.ru/SignServer/rest/api/v2/requests/{req_id}/content?format={format}&authorityId={ca_id} |
Параметры | req_id - Идентификатор запроса на сертификат format - Формат представления содержимого запроса. ca_id - Идентификатор Удостоверяющего Центра |
Возвращаемое значение | Содержимое запроса на сертификат |
Описание форматов представления запроса на сертификат - DSSCertificateFormatEnum
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
404 | Запрос на сертификат с указанным ID не найден |
Пример запроса
GET https://host/SignServer/rest/api/v2/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://dss.cryptopro.ru/SignServer/rest/api/v2/requests/revokerequests/{req_id}/content?format={format}&authorityId={ca_id} |
Параметры | req_id - Идентификатор запроса на сертификат format - Тип предаставления содержимого запроса. ca_id - Идентификатор Удостоверяющего Центра |
Возвращаемое значение | Содержимое запроса |
Описание форматов представления запроса на сертификат - DSSCertificateFormatEnum
Примечание
Список запрос на аннулирование/приостановление/возобновление может быть получен только для сертификатов выпущенных через модуль интеграции с КриптоПро УЦ 2.0.
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
404 | Запрос на сертификат с указанным ID не найден |
Одобрение и отклонение запроса на сертификат
Принятие/отклонение запроса на сертификат:
Параметр | Значение |
---|---|
HTTP-метод | PATCH |
Путь | https://dss.cryptopro.ru/SignServer/rest/api/v2/requests/{req_id}/status |
Параметры | req_id - Идентификатор запроса на сертификат RequestStatus - Новый статус запроса на сертификат. |
Возвращаемое значение | Метод не имеет возвращаемого значения |
HTTP-код | Ошибка | Описание |
---|---|---|
401 | Authorization has been denied for this request | Пользователь не имеет разрешения на выполнение запроса |
Примечание
Метод может быть вызван только пользователем с ролью Оператор DSS. Оператор DSS может принять или отклонить запросы на сертификаты созданные через модуль интеграции с КриптоПро УЦ 2.0. Запросы на сертификат созданные через Offline УЦ могут быть только отклонены.
При отклонении/одобрении запроса на сертификат необходимо заполнить только поля Type
и Value
:
- Поле
Type
имеет фиксированное значение 0 (Certificate). - Поле
Value
может принимать значения 4 (ACCEPTED) или 8 (REJECTED)
Пример запроса
POST https://host/SignServer/rest/api/v2/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://dss.cryptopro.ru/SignServer/rest/api/v2/requests/revokerequests/{revreq_id}/status |
Параметры | revreq_id - Идентификатор запроса на аннулирование/приостановление/возобновление в УЦ RequestStatus - Новый статус запроса на сертификат. |
Возвращаемое значение | Метод не имеет возвращаемого значения |
В структруре RequestStatus необходимо заполнить поля:
Value
- может принимать значения 4 (ACCEPTED) или 8 (REJECTED)caID
- идентификатор Удостоверяющего ЦентраType
имеет фиксированное значение 0 (Certificate)Comment
(опциональное) - комментарий Оператора DSS. Например, причина отклонения запроса.
Значение req_id
необходимо взять их результата работы метода /certificates/{cert_id}/revokerequests -
поле ID
в структуре DSSRevRequest.
Последовательность действие Оператора DSS при одобрении/отклонении запросов на аннулирование/приостановление/возобновление:
- получить список сертификатов пользователя /certificates/
- для каждого из сертификатов пользователя проверить наличие запросов на аннулирование/приостановление/возобновление /certificates/{cert_id}/revokerequests
- если запрос DSSRevRequest имеет поле
Status
PENDING, то одобрить или отклонить его
HTTP-код | Ошибка | Описание |
---|---|---|
401 | Authorization has been denied for this request | Пользователь не имеет разрешения на выполнение запроса |
400 | invalid_enroll | Неверно указан идентификатор УЦ |
400 | invalid_rev_request | Неверно указан идентификатор запроса |
Примечание
Метод может быть вызван только пользователем с ролью Оператор DSS. Оператор DSS может принять или отклонить запросы на аннулирование/приостановление/возобновление созданные через модуль интеграции с КриптоПро УЦ 2.0.
Пример запроса
POST https://host/SignServer/rest/api/v2/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