REST API Сервиса Подписи v1 (для обратной совместимости)
Внимание!
Методы, описанные в данном разделе, работают в режиме обратной совместимости и НЕ поддерживают подтверждение операций.
Список конечных точек v1 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
- причину отзыва сертификата CertRevokeReasonEnumRevocationDate
(опционально) - дату отзыва, если требуется отозвать сертификат в будущем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 |
Примечание
Хэширование документа работает только в поточном режиме. Подробнее о поточной обработке данных см. Потоковая обработка