Метод выпуска сертификата в контейнере pkcs#12

POST API – Выпуск сертификата в контейнере pkcs#12

Метод доступен:

­        администратору;

­        оператору при наличии полномочий на управление субъектами и использование шаблона, идентификаторы которых передаются во входных параметрах.

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

URL – certificate-authority-service/api/v3/public/certificates/enroll/{caId}

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A сертификаты/enrollByCaId

Query

 

{

 

caId (UUID),

ID ЦС

subjectId (UUID) [обязателен, если не указан userId],

ID субъекта

userId (UUID) [обязателен, если не указан subjectId]

ID учетной записи

}

 

Request

 

{

 

templateId (UUID),

Идентификатор шаблона[1]

subjectDN: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},

Поля разделенного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


subjectAltName: {

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

},

Поля альтернативного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра



keyBits (integer),

Длина ключа

keyAlgorithm (enum: RSA, ECDSA, GOST_R_34_10_2012, UNKNOWN),

Алгоритм ключевой пары сертификата

password (string)

Пароль контейнера

}

 

Response

 

ResponseEntity -> ItemResponse -> {

Ответ JSON в HTTP-body

id (UUID),

ID сертификата

downloadActions: {

Доступные действия по выгрузке

p12 (boolean),

Флаг: выгрузка pkcs12

csr (boolean),

Флаг: выгрузка pkcs10

pem (boolean)

Флаг: выгрузка сертификата

},

 

fingerprint (string),

Фингерпринт шаблона

serialnumber (string),

Серийный номер сертификата

templateId (UUID),

ID шаблона

templateName (string),

Имя шаблона

name (string),

Имя сертификата (на основе CN)

issuerDN: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},

Поля разделенного имени субъекта издателя из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


subjectDN: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


subjectAltName: {

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

},

Поля альтернативного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра



validFrom (instant),

Дата начала действия сертификата (ISO 8601)

validTo (instant)

Дата окончания действия сертификата (ISO 8601)

}

 

[1] Шаблоны в eCA-CA 2.2 содержат поле «Центр сертификации» (поле «certificateAuthorityId»), определяющее ЦС, на котором должен быть издан сертификат. В случае, если для указанного в поле «templateId» шаблона задан ЦС, отличный от указанного в поле «caId», ответ данного метода будет иметь код 500 и будет содержать сообщение об ошибке «Шаблон {идентификатор шаблона} не может быть использован для выпуска сертификата на центре сертификации {идентификатор центра сертификации из поля «caId»}». При использовании шаблона, в котором в поле «Центр сертификации» указано значение «Любой», выпуск сертификата будет происходить на ЦС, указанном в поле «caId».

Пример использования метода

curl -k --location 'https://172.17.152.213/certificate-authority-service/api/v3/public/certificates/enroll/7efd4f36-29ef-481e-ad0b-2dc143d9807c?subjectId=000000a6-d0c3-4a4e-aee6-be5ad83a3ba2\
 
--header 'Content-Type: application/json' \
 
--header 'Cookie: token=eyJhbGciOiJSUzUxMiJ9.eyJzZXNzaW9uSWQiOiI2YmRiMjQ2MS03MGY5LTRiZDItODA2NC0yYjgwM2M4OWY4ZTciLCJpYXQiOjE3MDIzMDU3NzYsImV4cCI6MTcwMjMwNTk1Nn0.ItIqTdQWF4chi1jlxjHNYyYaYUyO34-bZ-3PADuR_f68McSJf6c-VwWI0UkQClMG9EhA0MOX1AD1hUMLc-Kd8vfL7gRRuQUIIhF4ii55D815f3z2dlrtkYc8BHioFwUrMvyCBo7m3CnD17VQ_IOAxFZjLwQendelwrJs6OGPusmST21_kBNdXocfs5SJ3wzxBIITYTw94pM_onvQzHo8J30CBqUcwihQ5Gr5N9VQ5o7oCXjwonxbJaYi5eRKUfQdae9weUFSeq-cFTQwTF2CmGKru2uHAnea66sNaFHLXadAqjW_DrPupNXKjuB0eWtsq2ljYzyTw2M31pbAdm3brQ' \
 
--data-raw '{
 
"templateId":"059a38f5-f345-4275-b79f-e7e6cc3cbb68",
 
"subjectDN":{
 
"CN":["Dena Marshall"]
 
},
 
"subjectAltName":{
 
"RFC822NAME":["Thenterage87@test.local"],
 
"MS_UPN":["Thenterage87@test.local"]
 
},
 
"keyBits":2048,
 
"keyAlgorithm":"RSA",
 
"password":"werwer1QQ"
 
}

Пример ответа на обращение к методу

{
 
    "status": 200,
 
    "data": {
 
        "id": "7bde3592-e092-4f8b-ad1c-5ba3323ebbab",
 
        "downloadActions": {
 
            "p12": true,
 
            "pem": true,
 
            "csr": false
 
        },
 
        "fingerprint": "692297d8597376406ded21d1ae5cb4692a00b74e",
 
        "serialNumber": "152aaa67cc9c67b8a27c77e0f457a742847ced2c",
 
        "templateId": "059a38f5-f345-4275-b79f-e7e6cc3cbb68",
 
        "templateName": "WEB-Client",
 
        "name": "Dena Marshall",
 
        "issuerDN": {
 
            "CN": [
 
                "SUB_CA_INFORM"
 
            ],
 
            "OU": [
 
                "Department"
 
            ],
 
            "O": [
 
                "organization"
 
            ],
 
            "L": [
 
                "City"
 
            ],
 
            "C": [
 
                "RU"
 
            ],
 
            "DC": [
 
                "Component"
 
            ]
 
        },
 
        "subjectDN": {
 
            "CN": [
 
                "Dena Marshall"
 
            ]
 
        },
 
        "subjectAltName": {
 
            "RFC822NAME": [
 
                "Thenterage87@test.local"
 
            ],
 
            "MS_UPN": [
 
                "Thenterage87@test.local"
 
            ]
 
        },
 
        "validFrom": "2024-02-06T12:24:33.522558492Z",
 
        "validTo": "2026-02-05T12:24:33.522558492Z"
 
    }
 
}

Методы выпуска сертификата по запросу pkcs#10

Выпуск сертификата по запросу pkcs#10 (формат запроса на сертификат из входных параметров – multipart/form-data)

POST API – Выпуск сертификата по запросу pkcs#10 (multipart/form-data)

Метод доступен:

­        администратору;

­        оператору при наличии полномочий на управление субъектами и использование шаблона, идентификаторы которых передаются во входных параметрах.

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

URL – certificate-authority-service/api/v3/public/certificates/enroll/{caId}/pkcs10

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A сертификаты/enrollRequestByCaId_1

Query

 

{


caId (UUID),

ID ЦС

subjectId (UUID) [обязателен, если не указан userId],

ID субъекта

userId (UUID) [обязателен, если не указан subjectId]

ID учетной записи

}


Request

 

{


templateId (UUID),

Идентификатор шаблона[1]

request (binary),

Файл запроса на сертификат (см. пример использования метода ниже)

subjectName: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},[опционально]

Поля отличительного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра.

Значения полей, указанные в subjectName, переопределяют значения соответствующих полей SDN запроса на сертификат, при условии, что они соответствуют значениям атрибутов субъекта.

subjectAltName: {

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

} [опционально]

Поля альтернативного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра.

Значения полей, указанные в subjectAltName, переопределяют значения соответствующих полей SAN запроса на сертификат, при условии, что они соответствуют значениям атрибутов субъекта.

}


Response

 

ResponseEntity -> ItemResponse -> {

Ответ JSON в HTTP-body

id (UUID),

ID сертификата

downloadActions: {

Доступные действия по выгрузке

p12 (boolean),

Флаг: выгрузка pkcs12

csr (boolean),

Флаг: выгрузка pkcs10

pem (boolean)

Флаг: выгрузка сертификата

},


fingerprint (string),

Фингерпринт шаблона

serialnumber (string),

Серийный номер сертификата

templateId (UUID),

ID шаблона

templateName (string),

Имя шаблона

name (string),

Имя сертификата (на основе CN)

issuerDN: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},

Поля разделенного имени субъекта издателя из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


subjectDN: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


subjectAltName: {

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

},

Поля альтернативного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра



validFrom (instant),

Дата начала действия сертификата (ISO 8601)

validTo (instant)

Дата окончания действия сертификата (ISO 8601)

}


Пример использования метода через Curl:

curl -k --request POST --location 'https://192.168.111.18/certificate-authority-service/api/v3/public/certificates/enroll/e7e2fdac-b863-4194-9174-bed0a67f25e8/pkcs10?subjectId=48a4b6dd-a5e9-45eb-ad0c-59923618dc4c' \
 
--header 'Cookie: token=eyJhbGciOiJSUzUxMiJ9.eyJzZXNzaW9uSWQiOiI0ZmFhYjgxNi0wZGNhLTQ0ZjctOGQzZS0xNDkwNTdmYzYwZmEiLCJpYXQiOjE3MDIwMjc5ODYsImV4cCI6MTcwMjAyODE2Nn0.EBQw9zAD-I8BsCkYT5A8mUdyjBc7f14Ogm17ui0IdjpdK6Eq4k5UQ13Vgj2kMhU2XQKnbXt4NZNJ45Y8d-_FXXwk_lKcG94X8YvrmF6tWHnAOt3DLjsIMm3ZbMJjAopQx-0PQURg8_aQ6d4E2rLWB-mWE1h8JqcwZ5g29yD1qHS7V0ArSy_AbkFmnqUrrq6CVcQLETGef05qCIIx5_WEB9bF-bnevA9aqLTPWdYzbcXTAUgRumVkEKgi_iF9S-mSYFC8EtYvztC30k1EtssR6wG2VucIozLhYRuwVavXD7OXyQ8pRtKxYIQimt7cuD5Ez7v-ML9LfDZ5B6EIh1OM7g' \
 
--form 'request=@"/C:/Users/user/Downloads/request.csr"'

 [1] Шаблоны в eCA-CA 2.2 содержат поле «Центр сертификации» (поле «certificateAuthorityId»), определяющее ЦС, на котором должен быть издан сертификат. В случае, если для указанного в поле «templateId» шаблона задан ЦС, отличный от указанного в поле «caId», ответ данного метода будет иметь код 500 и будет содержать сообщение об ошибке «Шаблон {идентификатор шаблона} не может быть использован для выпуска сертификата на центре сертификации {идентификатор центра сертификации из поля «caId»}». При использовании шаблона, в котором в поле «Центр сертификации» указано значение «Любой», выпуск сертификата будет происходить на ЦС, указанном в поле «caId».

Выпуск сертификата по запросу pkcs#10 (формат запроса на сертификат из входных параметров – application/json)

Примечание: отличается от метода выше форматом передаваемого во входных параметрах запроса на сертификат. В данном методе на вход поступает содержимое файла запроса на сертификат в формате PEM (содержимое в Base64).

POST API – Выпуск сертификата по запросу pkcs#10 (application/json)

Метод доступен:

­        администратору;

­        оператору при наличии полномочий на управление субъектами и использование шаблона, идентификаторы которых передаются во входных параметрах.

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

URL – certificate-authority-service/api/v3/public/certificates/enroll/{caId}/pkcs10

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A сертификаты/enrollRequestByCaId_1

Query

 

{


caId (UUID),

ID ЦС

subjectId (UUID) [обязателен, если не указан userId],

ID субъекта

userId (UUID) [обязателен, если не указан subjectId]

ID учетной записи

}


Request

 

{


templateId (UUID),

Идентификатор шаблона[1]

request: {

Запрос на сертификат

contentType(string) [опционально],

Тип загружаемого файла (HTTP MediaType) - application/octet-stream)

fileName (string) [опционально],

Имя загружаемого файла

data (string:binary)

Содержимое PEM файла запроса на сертификат (массив байт в Base64) – см. пример использования метода ниже

},


subjectName: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},[опционально]

Поля отличительного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра.

Значения полей, указанные в subjectName, переопределяют значения соответствующих полей SDN запроса на сертификат, при условии, что они соответствуют значениям атрибутов субъекта.


subjectAltName: {

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

} [опционально]

Поля альтернативного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра.

Значения полей, указанные в subjectAltName, переопределяют значения соответствующих полей SAN запроса на сертификат, при условии, что они соответствуют значениям атрибутов субъекта.



}


Response

 

ResponseEntity -> ItemResponse -> {

Ответ JSON в HTTP-body

id (UUID),

ID сертификата

downloadActions: {

Доступные действия по выгрузке

p12 (boolean),

Флаг: выгрузка pkcs12

csr (boolean),

Флаг: выгрузка pkcs10

pem (boolean)

Флаг: выгрузка сертификата

},


fingerprint (string),

Фингерпринт шаблона

serialnumber (string),

Серийный номер сертификата

templateId (UUID),

ID шаблона

templateName (string),

Имя шаблона

name (string),

Имя сертификата (на основе CN)

issuerDN: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},

Поля разделенного имени субъекта издателя из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


subjectDN: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


subjectAltName: {

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

},

Поля альтернативного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра



validFrom (instant),

Дата начала действия сертификата (ISO 8601)

validTo (instant)

Дата окончания действия сертификата (ISO 8601)

}


Пример использования метода через Curl:

curl -k --request POST --location 'https://192.168.111.18/certificate-authority-service/api/v3/public/certificates/enroll/e7e2fdac-b863-4194-9174-bed0a67f25e8/pkcs10?subjectId=48a4b6dd-a5e9-45eb-ad0c-59923618dc4c' \
 
--header 'Content-Type: application/json' \
 
--data '{
 
    "templateId": "48a4b6dd-a5e9-45eb-ad0c-59923618dc4c",
 
    "request": {
 
        "contentType": "application/octet-stream",
 
        "fileName": "test",
 
        "data": "LS0tLS1CRUdJTiBORVcgQ0VSVElGSUNBVEUgUkVRVUVTVC0tLS0tCk1JSUNnekNDQVdzQ0FRQXdQakVQTUEwR0ExVUVCaE1HVW5WemMybGhNUTR3REFZRFZRUUtFd1YwYUhKbFpURU0NCk1Bb0dBMVVFQ3hNRGRIZHZNUTB3Q3dZRFZRUURFd1JTVDA5VU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0MNCkFROEFNSUlCQ2dLQ0FRRUFpOVRJeXRSck1FYi9kUlRhSWtxcEdZSGNkTlpRb0VNK2E2L090SVk3d3JCY2M2cEYNCnR1SUdGc0VkRmpNcWpKbFBlWmFhQ2lEMDhVMU1td0h2VXBqK3AzSEd3YWdIRkk2elNrcnNEUTJnKzhDL1B0ZnENCnVqcU1vRUhNTWZJK3FETEdVemp6eGJUV0F1T05DVjBtUmNpdTlIU2o0Ynh4dTVUeW05QnNhYVBvczR6MzAycC8NCkl3b3dlemxCZ0EzV2NYSlYzVTRSbW1VcERmcmlNNDRiWEw5R3BTejNJVkd1MlkxQWtlc3RpQXNCejhwMUNTbU8NClgrT3hwUUVIMVlFVHVsRFp0dGtTM2kvVmthV0JtTTZXK1VJWDZRYUwxTTdRSDFMTWVvYlludlUwSEVmQjRwYysNCnlJN1dKK2tCc3JLK1RNbHEyZFV5RTdnWFR4YUZkS1lpSmZKTnVRSURBUUFCb0FBd0RRWUpLb1pJaHZjTkFRRUYNCkJRQURnZ0VCQUIwWHNGYzhYUGJmME9hVGdCVkk2K0R1REs5NzVBVHREZHRCRTEwbDYzdlcwZkhzZmM0WHJ5bloNCkpaTXRmaXRGUExxcGtaT1lFbEtYSGpiZlJzYzd2NzJSRmszbGpUQ1l0Ym9INmFkT1IvWEVYMHlVSlpPMllTNSsNCnlNbE5neERNZ0NzeEhZQlFoNzhOYk1NUWIrSDhxMzh5ZzF1L01sL3JmOVhQbENCL05Wdm5raS8wOHQvQ0dySVcNCjZqb0RObnhQcFdyYWdQUjV5c3I0Q1J6L01DMkU0cEFESjZQdVlkZW9EYlFUTE1yMGFTRG5NTGdNZGN4eFVLNUkNCjNFb01zTEc1dUpoZWVQODBESFFuYnVLbStjTU4rK3lPcUxHa0FaaHdrRGREano0cTAyelV1RnhpeEJBVzcrRzYNCmkvejZhemRtTm5MR1VPSGZpYm5qN3Q2aFVKZUsxa289Ci0tLS0tRU5EIE5FVyBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K"
 
    }
 
}'
 
--cookie 'token=eyJhbGciOiJSUzUxMiJ9.eyJzZXNzaW9uSWQiOiJlZjI0ODYyMi1jZjRlLTRmZmUtYTJkZi1mODdmMmViOGRkZTYiLCJpYXQiOjE3MDIwMjkxMzQsImV4cCI6MTcwMjAyOTMxNH0.ZRrUsOTFw6jJZi4YS8c2xq3Qz2EObNpv2IV8I991m2hJrz6VmTQtzdyKihG7BDUZp_zOf_j63UbRmhtue59o6WQlii7sBRaFakckzxCP98mTc5muB9E77blfu0OHcoZqZfSX36bSoH6R0hLZ1FyTzjRnSfdrlKisQAaF0XrjK5nSfmgnEQOCinAu2f82tbFtXfyS1AeGjr1SL6A7EzQ_UvJNFfg4FWWyzgruSyJlVKAyn_kwdolJe1j_pOc4yr_rXH39lIqX6GL7tlC5cUSaDCXwg-hE49qkw9f9-2oBlip92Pug6dbeAPvPF5nnhH3JHw-3JogsrUsimTruqfl9GA'

[1] Шаблоны в eCA-CA 2.2 содержат поле «Центр сертификации» (поле «certificateAuthorityId»), определяющее ЦС, на котором должен быть издан сертификат.  В случае, если для указанного в поле «templateId» шаблона задан ЦС, отличный от указанного в поле «caId», ответ данного метода будет иметь код 500 и будет содержать сообщение об ошибке «Шаблон {идентификатор шаблона} не может быть использован для выпуска сертификата на центре сертификации {идентификатор центра сертификации из поля «caId»}». При использовании шаблона, в котором в поле «Центр сертификации» указано значение «Любой», выпуск сертификата будет происходить на ЦС, указанном в поле «caId».

Методы перевыпуска сертификата по запросу pkcs#10

Перевыпуск сертификата по запросу pkcs#10 (формат запроса на сертификат из входных параметров – multipart/form-data)

POST API – Перевыпуск сертификата по запросу pkcs#10 (multipart/form-data)

Метод доступен:

­        администратору;

­        оператору при наличии полномочий на управление субъектами и использование шаблона, идентификаторы которых передаются во входных параметрах.

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

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

При использовании метода проверяется наличие в базе данных программы выпущенного сертификата, имеющего «Subject Key Identifier» аналогичный указанному в запросе на сертификат из входных параметров. Если такой сертификат не будет найден, данный метод осуществит выпуск нового сертификата по запросу аналогично методу выпуска сертификата по запросу (см. раздел 5.2).

Если сертификат с аналогичным указанному в запросе на сертификат «Subject Key Identifier» будет найден, программа:

1)                 проверит статус найденного сертификата. Если срок действия данного сертификата истек, запрос пользователя будет отклонен.

2)                 проверит соответствие значений в полях SDN и SAN, указанных в запросе (или во входных параметрах метода), значениям в полях SDN и SAN в найденном сертификате. При соответствии значений будет осуществлен выпуск сертификата по запросу на сертификат из входных параметров метода, иначе запрос пользователя будет отклонен.

URL – certificate-authority-service/api/v3/public/certificates/renewal/{caId}/pkcs10

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A сертификаты/renewalRequestByCaId_1

Query

 

{


caId (UUID),

ID ЦС

subjectId (UUID) [обязателен, если не указан userId],

ID субъекта

userId (UUID) [обязателен, если не указан subjectId]

ID учетной записи

}


Request

 

{


templateId (UUID),

Идентификатор шаблона

request (binary),

Файл запроса на сертификат

subjectName: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},[опционально]

Поля отличительного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра.

Значения полей, указанные в subjectName, переопределяют значения соответствующих полей SDN запроса на сертификат, при условии, что они соответствуют значениям атрибутов субъекта.

subjectAltName: {

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

} [опционально]

Поля альтернативного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра.

Значения полей, указанные в subjectAltName, переопределяют значения соответствующих полей SAN запроса на сертификат, при условии, что они соответствуют значениям атрибутов субъекта.

}


Response

 

ResponseEntity -> ItemResponse -> {

Ответ JSON в HTTP-body

id (UUID),

ID сертификата

downloadActions: {

Доступные действия по выгрузке

p12 (boolean),

Флаг: выгрузка pkcs12

csr (boolean),

Флаг: выгрузка pkcs10

pem (boolean)

Флаг: выгрузка сертификата

},


fingerprint (string),

Фингерпринт шаблона

serialnumber (string),

Серийный номер сертификата

templateId (UUID),

ID шаблона

templateName (string),

Имя шаблона

name (string),

Имя сертификата (на основе CN)

issuerDN: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},

Поля разделенного имени субъекта издателя из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


subjectDN: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


subjectAltName: {

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

},

Поля альтернативного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра



validFrom (instant),

Дата начала действия сертификата (ISO 8601)

validTo (instant)

Дата окончания действия сертификата (ISO 8601)

}


Перевыпуск сертификата по запросу pkcs#10 (формат запроса на сертификат из входных параметров – application/json)

Примечание: отличается от метода выше форматом передаваемого во входных параметрах запроса на сертификат. В данном методе на вход поступает содержимое файла запроса на сертификат в формате PEM (содержимое в Base64).

POST API – Перевыпуск сертификата в по запросу pkcs#10 (application/json)

Метод доступен:

  • администратору;
  • оператору при наличии полномочий на управление субъектами и использование шаблона, идентификаторы которых передаются во входных параметрах.

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

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

При использовании метода проверяется наличие в базе данных программы выпущенного сертификата, имеющего «Subject Key Identifier» аналогичный указанному в запросе на сертификат из входных параметров. Если такой сертификат не будет найден, данный метод осуществит выпуск нового сертификата по запросу аналогично методу выпуска сертификата по запросу (см. раздел 5.2).

Если сертификат с аналогичным указанному в запросе на сертификат «Subject Key Identifier» будет найден, программа:

1) проверит статус найденного сертификата. Если срок действия данного сертификата истек, запрос пользователя будет отклонен.

2) проверит соответствие значений в полях SDN и SAN, указанных в запросе (или во входных параметрах метода), значениям в полях SDN и SAN в найденном сертификате. При соответствии значений будет осуществлен выпуск сертификата по запросу на сертификат из входных параметров метода, иначе запрос пользователя будет отклонен.

URL – certificate-authority-service/api/v3/public/certificates/renewal/{caId}/pkcs10

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A сертификаты/renewalRequestByCaId_1

Query

 

{


caId (UUID),

ID ЦС

subjectId (UUID) [обязателен, если не указан userId],

ID субъекта

userId (UUID) [обязателен, если не указан subjectId]

ID учетной записи

}


Request

 

{


templateId (UUID),

Идентификатор шаблона

request: {

Запрос на сертификат

contentType(string) [опционально],

Тип загружаемого файла (HTTP MediaType) - application/octet-stream)

fileName (string) [опционально],

Имя загружаемого файла

data (string:binary)

Содержимое PEM файла запроса на сертификат (массив байт в Base64) – см. пример использования метода ниже

},


subjectName: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},[опционально]

Поля отличительного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра.

Значения полей, указанные в subjectName, переопределяют значения соответствующих полей SDN запроса на сертификат, при условии, что они соответствуют значениям атрибутов субъекта.

subjectAltName: {

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

} [опционально]

Поля альтернативного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра.

Значения полей, указанные в subjectAltName, переопределяют значения соответствующих полей SAN запроса на сертификат, при условии, что они соответствуют значениям атрибутов субъекта.

}


Response

 

ResponseEntity -> ItemResponse -> {

Ответ JSON в HTTP-body

id (UUID),

ID сертификата

downloadActions: {

Доступные действия по выгрузке

p12 (boolean),

Флаг: выгрузка pkcs12

csr (boolean),

Флаг: выгрузка pkcs10

pem (boolean)

Флаг: выгрузка сертификата

},


fingerprint (string),

Фингерпринт шаблона

serialnumber (string),

Серийный номер сертификата

templateId (UUID),

ID шаблона

templateName (string),

Имя шаблона

name (string),

Имя сертификата (на основе CN)

issuerDN: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},

Поля разделенного имени субъекта издателя из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


subjectDN: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


subjectAltName: {

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

},

Поля альтернативного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра



validFrom (instant),

Дата начала действия сертификата (ISO 8601)

validTo (instant)

Дата окончания действия сертификата (ISO 8601)

}


Методы валидации запроса pkcs#10

Метод валидации запроса pkcs#10 (формат запроса на сертификат из входных параметров – multipart/form-data)

POST API – Валидация запроса pkcs#10 (multipart/form-data)

Метод доступен:

­        администратору;

­        оператору при наличии полномочий на управление субъектами и использование шаблона, идентификаторы которых передаются во входных параметрах.

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

URL – certificate-authority-service/api/v3/public/certificates/validate/{caId}/pkcs10

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A сертификаты/validate_1

Query

 

{

 

caId (UUID)

ID ЦС

subjectId (UUID) [обязателен, если не указан accountId],

ID субъекта

accountId (UUID) [обязателен, если не указан subjectId]

ID учетной записи

}

 

Request

 

{

 

templateId (UUID),

Идентификатор шаблона

request (binary),

Файл запроса на сертификат

subjectName: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},[опционально]

Поля отличительного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра.

Значения полей, указанные в subjectName, переопределяют значения соответствующих полей SDN запроса на сертификат, при условии, что они соответствуют значениям атрибутов субъекта.

subjectAltName: {

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

} [опционально]

Поля альтернативного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра.

Значения полей, указанные в subjectAltName, переопределяют значения соответствующих полей SAN запроса на сертификат, при условии, что они соответствуют значениям атрибутов субъекта.

}

 

Response

 

ResponseEntity -> ItemResponse -> {

Ответ JSON в HTTP-body

name (string),

Имя сертификата (на основе CN)

templateId (UUID),

ID шаблона

templateName (string),

Имя шаблона

subjectId (UUID)

ID субъекта (может отсутствовать, если в Query указан accountId, а не subjectId)

valid (boolean),

Флаг: запрос прошел валидацию

subjectNames: [{

Компоненты имени субъекта сертификата

fieldName (enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN),

Имя компонента

fieldValue (string),

Значение компонента

required (boolean),

Флаг: компонент обязательный

additional (boolean),

Флаг: компонент дополнительный

valid (boolean),

Флаг: компонент прошел валидацию

message (string)

Дополнительное сообщение

}],

 

subjectAltNames: [{

Компоненты расширенного имени субъекта сертификата

fieldName (enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN),

Имя компонента

fieldValue (string),

Значение компонента

required (boolean),

Флаг: компонент обязательный

additional (boolean),

Флаг: компонент дополнительный

valid (boolean),

Флаг: компонент прошел валидацию

message (string)

Дополнительное сообщение

}]

 

}

 

Метод валидации запроса pkcs#10 (формат запроса на сертификат из входных параметров – application/json)

Примечание: отличается от метода выше форматом передаваемого во входных параметрах запроса на сертификат. В данном методе на вход поступает содержимое файла запроса на сертификат в формате PEM (содержимое в Base64).

POST API – Валидация запроса pkcs#10 (application/json)

Метод доступен:

  • администратору;
  • оператору при наличии полномочий на управление субъектами и использование шаблона, идентификаторы которых передаются во входных параметрах.

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

URL – certificate-authority-service/api/v3/public/certificates/validate/{caId}/pkcs10

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A сертификаты/validate_1

Query

 

{

 

caId (UUID)

ID ЦС

subjectId (UUID) [обязателен, если не указан accountId],

ID субъекта

accountId (UUID) [обязателен, если не указан subjectId]

ID учетной записи

}

 

Request

 

{

 

templateId (UUID),

Идентификатор шаблона

request: {

Файл запроса на сертификат

contentType (string) [опционально],

Тип загружаемого файла (HTTP MediaType) - application/octet-stream)

fileName (string) [опционально],

Имя загружаемого файла

data (string:binary)

Содержимое загружаемого файла (массив байт в Base64)

},

 

subjectName: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},[опционально]

Поля отличительного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра.

Значения полей, указанные в subjectName, переопределяют значения соответствующих полей SDN запроса на сертификат, при условии, что они соответствуют значениям атрибутов субъекта.

subjectAltName: {

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

} [опционально]

Поля альтернативного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра.

Значения полей, указанные в subjectAltName, переопределяют значения соответствующих полей SAN запроса на сертификат, при условии, что они соответствуют значениям атрибутов субъекта.

}

 

Response

 

ResponseEntity -> ItemResponse -> {

Ответ JSON в HTTP-body

name (string),

Имя сертификата (на основе CN)

templateId (UUID),

ID шаблона

templateName (string),

Имя шаблона

subjectId (UUID)

ID субъекта (может отсутствовать, если в Query указан accountId, а не subjectId)

valid (boolean),

Флаг: запрос прошел валидацию

subjectNames: [{

Компоненты имени субъекта сертификата

fieldName (enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN),

Имя компонента

fieldValue (string),

Значение компонента

required (boolean),

Флаг: компонент обязательный

additional (boolean),

Флаг: компонент дополнительный

valid (boolean),

Флаг: компонент прошел валидацию

message (string)

Дополнительное сообщение

}],

 

subjectAltNames: [{

Компоненты расширенного имени субъекта сертификата

fieldName (enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN),

Имя компонента

fieldValue (string),

Значение компонента

required (boolean),

Флаг: компонент обязательный

additional (boolean),

Флаг: компонент дополнительный

valid (boolean),

Флаг: компонент прошел валидацию

message (string)

Дополнительное сообщение

}]

 

}

 

Метод поиска сертификатов

GET API – Поиск сертификатов

Метод доступен администратору и оператору

URL – certificate-authority-service/api/v3/public/certificates

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A сертификаты/findAll_14

Query

 

{

 

search (string) [опционально],

Полнотекстовый поиск (имя или серийный номер)

issuerId (UUID) [опционально],

ID сертификата издателя

templateId (UUID) [опционально],

ID шаблона

status (enum[]: ACTIVE, HOLD, REVOKE, REQUEST, UNKNOWN) [опционально],

Статус сертификата

type (enum[]:CERTIFICATE, ROOT_CA, SUB_CA, UNKNOWN) [опционально],

Тип сертификата

revocationReason (enum[]:UNSPECIFIED, KEY_COMPROMISE, CA_COMPROMISE, AFFILIATION_CHANGED, SUPERSEDED, CESSATION_OF_OPERATION, CERTIFICATE_HOLD, REMOVE_FROM_CRL, PRIVILEGE_WITHDRAWN, AA_COMPROMISE, UNKNOWN) [опционально],

Причина отзыва

notRevocationReason (enum[]:UNSPECIFIED, KEY_COMPROMISE, CA_COMPROMISE, AFFILIATION_CHANGED, SUPERSEDED, CESSATION_OF_OPERATION, CERTIFICATE_HOLD, REMOVE_FROM_CRL, PRIVILEGE_WITHDRAWN, AA_COMPROMISE, UNKNOWN) [опционально],

Исключая причину отзыва

revocationDateFrom (instant) [опционально],

Дата отзыва (начало)

revocationDateTo (instant) [опционально],

Дата отзыва (окончание)

hasRevocationReason (boolean) [опционально],

Флаг: наличие причины отзыва

hasRequest (boolean) [опционально],

Флаг: наличие pkcs10

hasCA (boolean) [опционально],

Флаг: наличие ЦС

isManagementCA (boolean) [опционально],

Флаг: технологический ЦС

isValid (boolean) [опционально],

Флаг: сертификат действует

isExpired (boolean) [опционально],

Флаг: сертификат истек

validFromFrom (instant) [опционально],

Дата начала действия (начало)

validFromTo (instant) [опционально],

Дата начала действия (окончание)

validToFrom (instant) [опционально],

Дата окончания действия (начало)

validToTo (instant), [опционально],

Дата окончания действия (окончание)

updatedFrom (instant) [опционально],

Дата обновления сертификата (начало)

updatedTo (instant), [опционально],

Дата обновления сертификата (конец)

subjectId (UUID[]),[опционально],

ID субъекта

userId (UUID[]),[опционально],

ID учетной записи

serialnumber (string[]),[опционально],

Серийный номер

fingerprint (string[]),[опционально],

Отпечаток

subjectKeyIdentifier (string[]),[опционально],

Идентификатор ключа субъекта

notId (UUID[]),[опционально],

Исключая ID сертификата

endEntityType(string[])(enum[]:ROOT_CA, SUB_CA, USER, DEVICE, UNKNOWN) [опционально],

Фильтр: Тип субъекта

sortDirection (string), [опционально],

Направления сортировки (ASC;DESC)

sortBy (string[]),[опционально],

Список полей, к которым применяется сортировка

pageOffset (integer), [опционально],

Смещение от начала списка (пагинация)

pageLimit (integer), [опционально],

Ограничение на размер выборки (пагинация)

}

 

Request

 

-


Response

 

ResponseEntity -> CollectionResponse -> {

Ответ JSON в HTTP-body

id (UUID),

Идентификатор сертификата

issuerId (UUID),

Идентификатор издателя сертификата

issuerFingerprint (string),

Фингерпринт издателя сертификата

serialnumber (string),

Серийный номер сертификата

fingerprint (string),

Фингерпринт сертификата

issuerDN: {

Имя субъекта издателя сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта издателя из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},

 

subjectDN: {

Имя субъекта сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},

 

subjectAltName: {

Альтернативное имя субъекта сертификата

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

Поля альтернативного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},

 

name (string),

Имя сертификата (на основе CN)

templateId (UUID),

Идентификатор шаблона

templateName (string),

Имя шаблона

validFrom (instant),

Дата начала действия сертификата (ISO 8601)

validTo (instant),

Дата окончания действия сертификата (ISO 8601)

status (enum: ACTIVE, HOLD, REVOKE, REQUEST, UNKNOWN),

Статус сертификата ЦС

isValid (boolean),

Флаг: сертификат действует

isExpired (boolean),

Флаг: сертификат истек

actions: {

Доступные действия по выгрузке

p12(boolean),

Флаг: выгрузка pkcs12

csr(boolean),

Флаг: выгрузка pkcs10

pem(boolean)

Флаг: выгрузка сертификата

},

 

revocation: {

Сведения об отзыве сертификата

date (instant),

Дата отзыва

number (int32),

Код причины отзыва

value (string)

Значение причины отзыва

},

 

hashAlgorithm (enum: SHA1, SHA256, SHA384, SHA512, SHA3_256, SHA3_384, SHA3_512, RSASSA_PSS, MD5, GOST_R_34_11_2012, UNKNOWN),

Алгоритм подписи сертификата

keyAlgorithm (enum: RSA, ECDSA, GOST_R_34_10_2012, UNKNOWN),

Алгоритм ключа сертификата

keyBits (int4),

Длина ключа сертификата

subjectKeyIdentifier (string),

Идентификатор ключа сертификата

authorityKeyIdentifier (string),

Идентификатор ключа издателя сертификата

updated (instant),

Время обновления (ISO 8601)

created (instant)

Время создания (ISO 8601)

}

 

Пример использования метода

Curl -k --location 'https://172.17.152.213/certificate-authority-service/api/v3/public/certificates' \
 
--header 'Cookie: token=eyJhbGciOiJSUzUxMiJ9.eyJzZXNzaW9uSWQiOiIwNjQxN2YzMC00YjY4LTRkYzAtODAzZS05OGJlN2FkMjU1NDgiLCJpYXQiOjE3MDIzMDY0NzUsImV4cCI6MTcwMjMwNjY1NX0.BdJq0S8lPuJd1nnkVZ1z50eCrkoPPelFnOoO1vt4Q0YaZGm-ckRmriMlsXWqfN__5UbiTBu43QoORHiYLSlJi-NfUo-G-teXFkNDYreguAY86e8w3PVYEqdSOnlDxxzGTQZbwznq6-GG2nhbmvHNwe5Bixx_z8UBVdcdcC4JARQY6RY6_8g0OOoI0OSvE7Grgspuq8We49DhYCC35rHwtQGVfNThfpe251K_Y4kp7azdKFlgqZhWyNpS6CEy_zm-ZgV7wYEzvT8B0f_gGAHW24Zfb73WPO-dY-ZfnJdVlRgcbb0vS9cVBwvOaDjbKr_2Jl00fyegZ5UDLWCUlhtXLg'

Пример ответа на обращение к методу

{
 
    "status": 200,
 
    "data": {
 
        "range": {
 
            "count": 562147,
 
            "offset": 0,
 
            "limit": 10,
 
            "totalPages": 56215,
 
            "pageNumber": 0
 
        },
 
        "items": [
 
            {
 
                "id": "00001a1f-75cf-4f3d-8160-fb3ac46b937d",
 
                "issuerId": "6f89cfdb-fcb8-4d8a-a0f8-e258fc1c4b5f",
 
                "issuerFingerprint": null,
 
                "serialnumber": "4d6b853f3eed0e5c9029c49ae208393d3c7da846",
 
                "fingerprint": "1709af7e2719039b5666e9d1cf35cd45f2e61816",
 
                "issuerDN": {
 
                    "CN": [
 
                        "SUB_CA_INFORM"
 
                    ],
 
                    "OU": [
 
                        "Department"
 
                    ],
 
                    "O": [
 
                        "organization"
 
                    ],
 
                    "L": [
 
                        "City"
 
                    ],
 
                    "C": [
 
                        "RU"
 
                    ],
 
                    "DC": [
 
                        "Component"
 
                    ]
 
                },
 
                "subjectDN": {
 
                    "CN": [
 
                        "UserTest1425"
 
                    ]
 
                },
 
                "subjectAltName": {
 
                    "RFC822NAME": [
 
                        "user_test1425@example.com"
 
                    ],
 
                    "MS_UPN": [
 
                        "user_test1425@example.com"
 
                    ]
 
                },
 
                "name": "UserTest1425",
 
                "templateId": "aa03e458-50cd-46b8-82cd-d5612ed3b647",
 
                "templateName": "Smartcard Logon",
 
                "validFrom": "2024-02-01T16:04:36Z",
 
                "validTo": "2026-01-31T16:04:36Z",
 
                "status": "REVOKE",
 
                "isValid": true,
 
                "isExpired": false,
 
                "actions": {
 
                    "p12": true,
 
                    "pem": true,
 
                    "csr": false
 
                },
 
                "revocation": {
 
                    "date": "2024-02-02T15:31:45Z",
 
                    "number": 2,
 
                    "value": "Компрометация центра сертификации"
 
                },
 
                "hashAlgorithm": "SHA256",
 
                "keyAlgorithm": "RSA",
 
                "keyBits": 2048,
 
                "subjectKeyIdentifier": "14f2bde31d8dfc74e7d2483e609e4147bfa17dac",
 
                "authorityKeyIdentifier": "7c18ee16b61ff0163e230f147a5da9891ba8208d",
 
                "created": "2024-02-01T16:04:36.328403Z",
 
                "updated": "2024-02-02T15:31:45.495858Z"
 
            }        
 
        ]
 
    }
 
}

Метод получения сертификата по идентификатору

GET API – Получение сертификата по идентификатору

Метод доступен администратору и оператору при наличии полномочий

URL – certificate-authority-service/api/v3/public/certificates/{id}

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A сертификаты/findById_13

Query

 

{


id (UUID)

ID сертификата

}


Request

 

-


Response

 

ResponseEntity -> CollectionResponse -> {

Ответ JSON в HTTP-body

id (UUID),

Идентификатор сертификата

chain: {

Цепочка сертификатов (рекурсивный объект)

id (UUID),

Идентификатор сертификата

name (string),

Имя сертификата (на основе CN)

subjectDN: {

Имя субъекта сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},


issuer: {…}

Издатель сертификата (вложенный объект)

},


serialnumber (string),

Серийный номер сертификата

fingerprint (string),

Фингерпринт сертификата

name (string),

Имя сертификата (на основе CN)

issuerId (UUID),

Идентификатор издателя сертификата

issuerDN: {

Имя субъекта издателя сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта издателя из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},


subjectDN: {

Имя субъекта сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},


subjectAltName: {

Альтернативное имя субъекта сертификата

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

Поля альтернативного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},


keyAlgorithm (enum: RSA, ECDSA, GOST_R_34_10_2012, UNKNOWN),

Алгоритм ключа сертификата ЦС

hashAlgorithm (enum: SHA1, SHA256, SHA384, SHA512, SHA3_256, SHA3_384, SHA3_512, RSASSA_PSS, MD5, GOST_R_34_11_2012, UNKNOWN),

Алгоритм подписи сертификата ЦС

keyBits (int32),

Длина ключа сертификата ЦС

templateId (UUID),

Идентификатор шаблона

templateName (string),

Имя шаблона

type (enum: CERTIFICATE, ROOT_CA, SUB_CA, UNKNOWN),

Тип сертификата

endEntityType (enum: ROOT_CA, SUB_CA, USER, DEVICE, UNKNOWN),

Тип субъекта

validFrom (instant),

Дата начала действия сертификата (ISO 8601)

validTo (instant),

Дата окончания действия сертификата(ISO 8601)

status (enum: ACTIVE, HOLD, REVOKE, REQUEST, UNKNOWN),

Статус сертификата

isValid (boolean),

Флаг: сертификат действует

isExpired (boolean),

Флаг: сертификат истек

actions: {

Доступные действия по выгрузке

p12 (boolean),

Флаг: выгрузка pkcs12

csr (boolean),

Флаг: выгрузка pkcs10

pem (boolean)

Флаг: выгрузка сертификата

},


publicKey (string),

Открытый ключ

certificateType (string),

Тип сертификата (X.509)

version (int32),

Версия сертификата

subjectKeyIdentifier (string),

Идентификатор ключа сертификата

authorityKeyIdentifier (string)

Идентификатор ключа издателя сертификата

keyUsages: {

Назначение ключа сертификата

id (uuid),

Идентификатор элемента

code (enum: DIGITAL_SIGNATURE, NON_REPUDIATION, KEY_ENCIPHERMENT, DATA_ENCIPHERMENT, KEY_AGREEMENT, KEY_CERT_SIGN, CRL_SIGN, ENCIPHER_ONLY, DECIPHER_ONLY, UNKNOWN),

Перечисление использования ключа

value (string),

Наименование элемента

description (string)

Описание использования ключа

},


extendedKeyUsages: {

Расширенное назначение ключа сертификата

id (uuid),

Идентификатор назначения

value (string),

Наименование элемента

oid (string),

OID назначения

description (string),

Описание использования ключа

updated (instant),

Время обновления (ISO 8601)

created (instant),

Время создания (ISO 8601)

default (boolean)

Флаг: расширенное использование по умолчанию

},

Описание OID

ca (boolean),

Флаг: сертификат ЦС

revocation: {

Сведения об отзыве сертификата ЦС

date (instant),

Дата отзыва

number (int4),

Код причины отзыва

value (string)

Значение причины отзыва

},


aiaUrls (string[]),

URL AIA

ocspUrls (string[]),

URL OCSP

crlUrls (string[]),

URL CRL

deltaCrlUrls (string[]),

URL Delta CRL

userId (uuid),

Идентификатор субъекта

subjectId (uuid),

Идентификатор субъекта

created (instant)

Время создания (ISO 8601)

updated (instant),

Время обновления (ISO 8601)

}


Пример использования метода

curl -k --location 'https://172.17.152.213/certificate-authority-service/api/v3/public/certificates/00001a1f-75cf-4f3d-8160-fb3ac46b937d' \
 
--header 'Cookie: token=eyJhbGciOiJSUzUxMiJ9.eyJzZXNzaW9uSWQiOiJiZDk2OWJiNC02NmEzLTQ4MDItYjM0Yi1iZWUwNzAyOGU3ZGUiLCJpYXQiOjE3MDIzMDcwNTQsImV4cCI6MTcwMjMwNzIzNH0.SR6z9DXhHoNXloEjl7zGjPD3D_Y7pVEGUjf88R41Rb7fhm1iqA1QuQ4S4ruHG1X5SHZRWzxR20dkRqdL2Vw9YlBwsI4jL3Byvku3cG2kgbtgp8qxghmBiONQGcn71EAha7GqZXpAj-gAwgVcvQM5udqtn6mbNgC-tGb5ce1eeSG8QEhY74pTYvt7T_Ta_-B1pyDNIZnYKYZ12bC_4UTwPkAhtSOJLisenGj8qdQteuhKWN2JnYOxomTfJwJDo7pxVuCmh3POAquRzheKK73HZEaI4WfIidfvgMq-4izVkn1qrNv8X514OAj_XYsSL6QAHSEiUNnhmsaDlrhwvUsV_g'

Пример ответа на обращение к методу

{
 
    "status": 200,
 
    "data": {
 
        "id": "00001a1f-75cf-4f3d-8160-fb3ac46b937d",
 
        "chain": {
 
            "id": "00001a1f-75cf-4f3d-8160-fb3ac46b937d",
 
            "name": "UserTest1425",
 
            "subjectDN": {
 
                "CN": [
 
                    "UserTest1425"
 
                ]
 
            },
 
            "issuer": {
 
                "id": "6f89cfdb-fcb8-4d8a-a0f8-e258fc1c4b5f",
 
                "name": "SUB_CA_INFORM",
 
                "subjectDN": {
 
                    "CN": [
 
                        "SUB_CA_INFORM"
 
                    ],
 
                    "OU": [
 
                        "Department"
 
                    ],
 
                    "O": [
 
                        "organization"
 
                    ],
 
                    "L": [
 
                        "City"
 
                    ],
 
                    "C": [
 
                        "RU"
 
                    ],
 
                    "DC": [
 
                        "Component"
 
                    ]
 
                },
 
                "issuer": {
 
                    "id": "7501beab-e119-4e66-b853-6d9d2c9dc311",
 
                    "name": "aladdin",
 
                    "subjectDN": {
 
                        "CN": [
 
                            "aladdin"
 
                        ],
 
                        "OU": [
 
                            "Department"
 
                        ],
 
                        "O": [
 
                            "organization"
 
                        ],
 
                        "L": [
 
                            "City"
 
                        ],
 
                        "C": [
 
                            "RU"
 
                        ],
 
                        "DC": [
 
                            "Component"
 
                        ]
 
                    },
 
                    "issuer": null
 
                }
 
            }
 
        },
 
        "serialnumber": "4d6b853f3eed0e5c9029c49ae208393d3c7da846",
 
        "fingerprint": "1709af7e2719039b5666e9d1cf35cd45f2e61816",
 
        "name": "UserTest1425",
 
        "issuerId": "6f89cfdb-fcb8-4d8a-a0f8-e258fc1c4b5f",
 
        "issuerDN": {
 
            "CN": [
 
                "SUB_CA_INFORM"
 
            ],
 
            "OU": [
 
                "Department"
 
            ],
 
            "O": [
 
                "organization"
 
            ],
 
            "L": [
 
                "City"
 
            ],
 
            "C": [
 
                "RU"
 
            ],
 
            "DC": [
 
                "Component"
 
            ]
 
        },
 
        "subjectDN": {
 
            "CN": [
 
                "UserTest1425"
 
            ]
 
        },
 
        "subjectAltName": {
 
            "RFC822NAME": [
 
                "user_test1425@example.com"
 
            ],
 
            "MS_UPN": [
 
                "user_test1425@example.com"
 
            ]
 
        },
 
        "keyAlgorithm": "RSA",
 
        "hashAlgorithm": "SHA256",
 
        "keyBits": 2048,
 
        "templateId": "aa03e458-50cd-46b8-82cd-d5612ed3b647",
 
        "templateName": "Smartcard Logon",
 
        "type": "CERTIFICATE",
 
        "endEntityType": "USER"
 
        "validFrom": "2024-02-01T16:04:36Z",
 
        "validTo": "2026-01-31T16:04:36Z",
 
        "status": "REVOKE",
 
        "isValid": true,
 
        "isExpired": false,
 
        "actions": {
 
            "p12": true,
 
            "pem": true,
 
            "csr": false
 
        },
 
        "publicKey": "Sun RSA public key, 2048 bits\n  params: null\n  modulus: 16684524147953046208914603255158045592739327717136666634182536676609173596349409564976055764239529437203757589454401711720660963381814054609190027425234429644565424993223747579999907234270638034596830826027128654799803444905343427983513174219151696233130070103962650510551676666328973030704003137374468511101302050310646693768275803790727297109325921029427451316427896614112688527247678871772419372494170382138289087148488994670627339973262556438293884607389237698421303892569563029302741553379315509797255948748261221620490865455506427175926276718060091023744300977965399959233728690205975309521496783948010104967979\n  public exponent: 65537",
 
        "certificateType": "X.509",
 
        "version": 3,
 
        "subjectKeyIdentifier": "14f2bde31d8dfc74e7d2483e609e4147bfa17dac",
 
        "authorityKeyIdentifier": "7c18ee16b61ff0163e230f147a5da9891ba8208d",
 
        "keyUsages": [
 
            {
 
                "id": "31a1b2a8-e197-47e4-8cd7-2d463f83166f",
 
                "code": "DIGITAL_SIGNATURE",
 
                "value": "Digital signature",
 
                "description": "Цифровая подпись"
 
            },
 
            {
 
                "id": "519e5b6c-9d21-4478-97dd-f0e09c593151",
 
                "code": "NON_REPUDIATION",
 
                "value": "Non-repudiation",
 
                "description": "Подтверждение подлинности"
 
            },
 
            {
 
                "id": "4973c634-29a2-4f6a-903e-e6b2313ab0eb",
 
                "code": "KEY_ENCIPHERMENT",
 
                "value": "Key encipherment",
 
                "description": "Шифрование ключей"
 
            },
 
            {
 
                "id": "834d6f41-5d03-43e2-9b1c-82da036eed75",
 
                "code": "DATA_ENCIPHERMENT",
 
                "value": "Data encipherment",
 
                "description": "Шифрование данных"
 
            }
 
        ],
 
        "extendedKeyUsages": [
 
            {
 
                "id": "b170dc22-c502-4c90-800c-d883f2105c44",
 
                "code": "CLIENT_AUTHENTICATION",
 
                "value": "Client Authentication",
 
                "oid": "1.3.6.1.5.5.7.3.2",
 
                "description": "Аутентификация клиента"
 
            },
 
            {
 
                "id": "0848b618-2a61-42f8-be8d-192b87d73f92",
 
                "code": "EMAIL_PROTECTION",
 
                "value": "Email Protection",
 
                "oid": "1.3.6.1.5.5.7.3.4",
 
                "description": "Защита электронной почты"
 
            },
 
            {
 
                "id": "9f40092b-d5e1-4c34-8912-45ddc6971f2e",
 
                "code": "MS_SMART_CARD_LOGON",
 
                "value": "MS Smart Card Logon",
 
                "oid": "1.3.6.1.4.1.311.20.2.2",
 
                "description": "Вход с MS смарт-картой"
 
            }
 
        ],
 
        "ca": false,
 
        "revocation": {
 
            "date": "2024-02-02T15:31:45Z",
 
            "number": 2,
 
            "value": "Компрометация центра сертификации"
 
        },
 
        "aiaUrls": [
 
            "http://192.168.0.125:8080/aecaCdp/api/v3/aia/get-aia/2"
 
        ],
 
        "ocspUrls": [
 
            "http://192.168.0.125:8080/aeca-va/ocsp"
 
        ],
 
        "crlUrls": [
 
            "http://192.168.0.125:8080/aecaCdp/api/v3/crl/get-crl/1"
 
        ],
 
        "deltaCrlUrls": [],
 
        "userId": null,
 
        "subjectId": null,
 
        "created": "2024-02-01T16:04:36.328403Z",
 
        "updated": "2024-02-02T15:31:45.495858Z"
 
    }
 
}

Метод получения сертификата по серийному номеру

GET API – Получение сертификата по его серийному номеру

Метод доступен администратору и оператору при наличии полномочий

URL – certificate-authority-service/api/v3/public/certificates/serialNumber/{serialnumber}

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A сертификаты/getBySerialNumber

Query

 

{

 

serialnumber (string)

Серийный номер сертификата (формат: 40 символов, нижний регистр)

}

 

Request

 

-


Response

 

ResponseEntity -> CollectionResponse -> {

Ответ JSON в HTTP-body

id (UUID),

Идентификатор сертификата

chain: {

Цепочка сертификатов (рекурсивный объект)

id (UUID),

Идентификатор сертификата

name (string),

Имя сертификата (на основе CN)

subjectDN: {

Имя субъекта сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},

 

issuer: {…}

Издатель сертификата (вложенный объект)

},

 

serialnumber (string),

Серийный номер сертификата

fingerprint (string),

Фингерпринт сертификата

name (string),

Имя сертификата (на основе CN)

issuerId (UUID),

Идентификатор издателя сертификата

issuerDN: {

Имя субъекта издателя сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта издателя из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},

 

subjectDN: {

Имя субъекта сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},

 

subjectAltName: {

Альтернативное имя субъекта сертификата

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

Поля альтернативного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},

 

keyAlgorithm (enum: RSA, ECDSA, GOST_R_34_10_2012, UNKNOWN),

Алгоритм ключа сертификата ЦС

hashAlgorithm (enum: SHA1, SHA256, SHA384, SHA512, SHA3_256, SHA3_384, SHA3_512, RSASSA_PSS, MD5, GOST_R_34_11_2012, UNKNOWN),

Алгоритм подписи сертификата ЦС

keyBits (int32),

Длина ключа сертификата ЦС

templateId (UUID),

Идентификатор шаблона

templateName (string),

Имя шаблона

type (enum: CERTIFICATE, ROOT_CA, SUB_CA, UNKNOWN),

Тип сертификата

endEntityType (enum: ROOT_CA, SUB_CA, USER, DEVICE, UNKNOWN),

Тип субъекта

validFrom (instant),

Дата начала действия сертификата (ISO 8601)

validTo (instant),

Дата окончания действия сертификата(ISO 8601)

status (enum: ACTIVE, HOLD, REVOKE, REQUEST, UNKNOWN),

Статус сертификата

isValid (boolean),

Флаг: сертификат действует

isExpired (boolean),

Флаг: сертификат истек

actions: {

Доступные действия по выгрузке

p12 (boolean),

Флаг: выгрузка pkcs12

csr (boolean),

Флаг: выгрузка pkcs10

pem (boolean)

Флаг: выгрузка сертификата

},

 

publicKey (string),

Открытый ключ

certificateType (string),

Тип сертификата (X.509)

version (int32),

Версия сертификата

subjectKeyIdentifier (string),

Идентификатор ключа сертификата

authorityKeyIdentifier (string)

Идентификатор ключа издателя сертификата

keyUsages: {

Назначение ключа сертификата

id (uuid),

Идентификатор элемента

code (enum: DIGITAL_SIGNATURE, NON_REPUDIATION, KEY_ENCIPHERMENT, DATA_ENCIPHERMENT, KEY_AGREEMENT, KEY_CERT_SIGN, CRL_SIGN, ENCIPHER_ONLY, DECIPHER_ONLY, UNKNOWN),

Перечисление использования ключа

value (string),

Наименование элемента

description (string)

Описание использования ключа

},

 

extendedKeyUsages: {

Расширенное назначение ключа сертификата

id (uuid),

Идентификатор элемента

value (string),

Наименование элемента

oid (string),

OID назначения

description (string),

Описание использования ключа

updated (instant),

Время обновления (ISO 8601)

created (instant),

Время создания (ISO 8601)

default (boolean)

Флаг: расширенное использование по умолчанию

},

Описание OID

ca (boolean),

Флаг: сертификат ЦС

revocation: {

Сведения об отзыве сертификата ЦС

date (instant),

Дата отзыва

number (int4),

Код причины отзыва

value (string)

Значение причины отзыва

},

 

aiaUrls (string[]),

URL AIA

ocspUrls (string[]),

URL OCSP

crlUrls (string[]),

URL CRL

deltaCrlUrls (string[]),

URL Delta CRL

userId (uuid),

Идентификатор субъекта

subjectId (uuid),

Идентификатор субъекта

created (instant)

Время создания (ISO 8601)

updated (instant),

Время обновления (ISO 8601)

}

 

Пример использования метода

curl -k --location 'https://172.17.152.213/certificate-authority-service/api/v3/public/certificates/serialNumber/4d6b853f3eed0e5c9029c49ae208393d3c7da846' \
 
--header 'Cookie: token=eyJhbGciOiJSUzUxMiJ9.eyJzZXNzaW9uSWQiOiI1MjQ4OWFmYS0zM2MzLTRiNzYtOTk2ZS0yOWZiNzBkMThiYWYiLCJpYXQiOjE3MDIzMDg5MTIsImV4cCI6MTcwMjMwOTA5Mn0.SAGyoqmqiTYrGwTP-HtYJS705ScACSOc7QojvB7no1EZfKnhhLosVyJXoe_XgttVyD0Jk_OPszQqsH0P2xMzAcrrs1pmqtGjywW_eivnX4DhGaQZDrHldljTXTa9_iI0WfLt5-oVK8VKN3tUaLwAOZNcgbayDP1T0l8Wkb4kx5euj-8z9xrBP8MWSXjybIt4CD9WkmpF9qF11iu6DaTHkiDvFgpCrNFOlC6bmbAWNag8eo95M1JTQpOILFiuA2vzVgLYW9TdCw6KZ8e0059OTgcZFuMqjkLaiqdZm3vK9o_fmiAvjvMVRBQQy8aP4IcCmHf7x4Omo5D5bg7Z3IOvGA'

Пример ответа на обращение к методу

{
 
    "status": 200,
 
    "data": {
 
        "id": "00001a1f-75cf-4f3d-8160-fb3ac46b937d",
 
        "chain": {
 
            "id": "00001a1f-75cf-4f3d-8160-fb3ac46b937d",
 
            "name": "UserTest1425",
 
            "subjectDN": {
 
                "CN": [
 
                    "UserTest1425"
 
                ]
 
            },
 
            "issuer": {
 
                "id": "6f89cfdb-fcb8-4d8a-a0f8-e258fc1c4b5f",
 
                "name": "SUB_CA_INFORM",
 
                "subjectDN": {
 
                    "CN": [
 
                        "SUB_CA_INFORM"
 
                    ],
 
                    "OU": [
 
                        "Department"
 
                    ],
 
                    "O": [
 
                        "organization"
 
                    ],
 
                    "L": [
 
                        "City"
 
                    ],
 
                    "C": [
 
                        "RU"
 
                    ],
 
                    "DC": [
 
                        "Component"
 
                    ]
 
                },
 
                "issuer": {
 
                    "id": "7501beab-e119-4e66-b853-6d9d2c9dc311",
 
                    "name": "aladdin",
 
                    "subjectDN": {
 
                        "CN": [
 
                            "aladdin"
 
                        ],
 
                        "OU": [
 
                            "Department"
 
                        ],
 
                        "O": [
 
                            "organization"
 
                        ],
 
                        "L": [
 
                            "City"
 
                        ],
 
                        "C": [
 
                            "RU"
 
                        ],
 
                        "DC": [
 
                            "Component"
 
                        ]
 
                    },
 
                    "issuer": null
 
                }
 
            }
 
        },
 
        "serialnumber": "4d6b853f3eed0e5c9029c49ae208393d3c7da846",
 
        "fingerprint": "1709af7e2719039b5666e9d1cf35cd45f2e61816",
 
        "name": "UserTest1425",
 
        "issuerId": "6f89cfdb-fcb8-4d8a-a0f8-e258fc1c4b5f",
 
        "issuerDN": {
 
            "CN": [
 
                "SUB_CA_INFORM"
 
            ],
 
            "OU": [
 
                "Department"
 
            ],
 
            "O": [
 
                "organization"
 
            ],
 
            "L": [
 
                "City"
 
            ],
 
            "C": [
 
                "RU"
 
            ],
 
            "DC": [
 
                "Component"
 
            ]
 
        },
 
        "subjectDN": {
 
            "CN": [
 
                "UserTest1425"
 
            ]
 
        },
 
        "subjectAltName": {
 
            "RFC822NAME": [
 
                "user_test1425@example.com"
 
            ],
 
            "MS_UPN": [
 
                "user_test1425@example.com"
 
            ]
 
        },
 
        "keyAlgorithm": "RSA",
 
        "hashAlgorithm": "SHA256",
 
        "keyBits": 2048,
 
        "templateId": "aa03e458-50cd-46b8-82cd-d5612ed3b647",
 
        "templateName": "Smartcard Logon",
 
        "type": "CERTIFICATE",
 
        "endEntityType": "USER"        "validFrom": "2024-02-01T16:04:36Z",
 
        "validTo": "2026-01-31T16:04:36Z",
 
        "status": "REVOKE",
 
        "isValid": true,
 
        "isExpired": false,
 
        "actions": {
 
            "p12": true,
 
            "pem": true,
 
            "csr": false
 
        },
 
        "publicKey": "Sun RSA public key, 2048 bits\n  params: null\n  modulus: 16684524147953046208914603255158045592739327717136666634182536676609173596349409564976055764239529437203757589454401711720660963381814054609190027425234429644565424993223747579999907234270638034596830826027128654799803444905343427983513174219151696233130070103962650510551676666328973030704003137374468511101302050310646693768275803790727297109325921029427451316427896614112688527247678871772419372494170382138289087148488994670627339973262556438293884607389237698421303892569563029302741553379315509797255948748261221620490865455506427175926276718060091023744300977965399959233728690205975309521496783948010104967979\n  public exponent: 65537",
 
        "certificateType": "X.509",
 
        "version": 3,
 
        "subjectKeyIdentifier": "14f2bde31d8dfc74e7d2483e609e4147bfa17dac",
 
        "authorityKeyIdentifier": "7c18ee16b61ff0163e230f147a5da9891ba8208d",
 
        "keyUsages": [
 
            {
 
                "id": "31a1b2a8-e197-47e4-8cd7-2d463f83166f",
 
                "code": "DIGITAL_SIGNATURE",
 
                "value": "Digital signature",
 
                "description": "Цифровая подпись"
 
            },
 
            {
 
                "id": "519e5b6c-9d21-4478-97dd-f0e09c593151",
 
                "code": "NON_REPUDIATION",
 
                "value": "Non-repudiation",
 
                "description": "Подтверждение подлинности"
 
            },
 
            {
 
                "id": "4973c634-29a2-4f6a-903e-e6b2313ab0eb",
 
                "code": "KEY_ENCIPHERMENT",
 
                "value": "Key encipherment",
 
                "description": "Шифрование ключей"
 
            },
 
            {
 
                "id": "834d6f41-5d03-43e2-9b1c-82da036eed75",
 
                "code": "DATA_ENCIPHERMENT",
 
                "value": "Data encipherment",
 
                "description": "Шифрование данных"
 
            }
 
        ],
 
        "extendedKeyUsages": [
 
            {
 
                "id": "b170dc22-c502-4c90-800c-d883f2105c44",
 
                "code": "CLIENT_AUTHENTICATION",
 
                "value": "Client Authentication",
 
                "oid": "1.3.6.1.5.5.7.3.2",
 
                "description": "Аутентификация клиента"
 
            },
 
            {
 
                "id": "0848b618-2a61-42f8-be8d-192b87d73f92",
 
                "code": "EMAIL_PROTECTION",
 
                "value": "Email Protection",
 
                "oid": "1.3.6.1.5.5.7.3.4",
 
                "description": "Защита электронной почты"
 
            },
 
            {
 
                "id": "9f40092b-d5e1-4c34-8912-45ddc6971f2e",
 
                "code": "MS_SMART_CARD_LOGON",
 
                "value": "MS Smart Card Logon",
 
                "oid": "1.3.6.1.4.1.311.20.2.2",
 
                "description": "Вход с MS смарт-картой"
 
            }
 
        ],
 
        "ca": false,
 
        "revocation": {
 
            "date": "2024-02-02T15:31:45Z",
 
            "number": 2,
 
            "value": "Компрометация центра сертификации"
 
        },
 
        "aiaUrls": [
 
            "http://192.168.0.125:8080/aecaCdp/api/v3/aia/get-aia/2"
 
        ],
 
        "ocspUrls": [
 
            "http://192.168.0.125:8080/aeca-va/ocsp"
 
        ],
 
        "crlUrls": [
 
            "http://192.168.0.125:8080/aecaCdp/api/v3/crl/get-crl/1"
 
        ],
 
        "deltaCrlUrls": [],
 
        "userId": null,
 
        "subjectId": null,
 
        "created": "2024-02-01T16:04:36.328403Z",
 
        "updated": "2024-02-02T15:31:45.495858Z"
 
    }
 
}

Метод получения сертификата по его отпечатку

GET API – Получение сертификата по его отпечатку

Метод доступен администратору и оператору при наличии полномочий

URL – certificate-authority-service/api/v3/public/certificates/fingerprint/{fingerprint}

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A сертификаты/getByFingerprint_1

Query

 

{

 

fingerprint (String)

Отпечаток сертификата

}

 

Request

 

-


Response

 

ResponseEntity -> CollectionResponse -> {

Ответ JSON в HTTP-body

id (UUID),

Идентификатор сертификата

chain: {

Цепочка сертификатов (рекурсивный объект)

id (UUID),

Идентификатор сертификата

name (string),

Имя сертификата (на основе CN)

subjectDN: {

Имя субъекта сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},

 

issuer: {…}

Издатель сертификата (вложенный объект)

},

 

serialnumber (string),

Серийный номер сертификата

fingerprint (string),

Фингерпринт сертификата

name (string),

Имя сертификата (на основе CN)

issuerId (UUID),

Идентификатор издателя сертификата

issuerDN: {

Имя субъекта издателя сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта издателя из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},

 

subjectDN: {

Имя субъекта сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},

 

subjectAltName: {

Альтернативное имя субъекта сертификата

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

Поля альтернативного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},

 

keyAlgorithm (enum: RSA, ECDSA, GOST_R_34_10_2012, UNKNOWN),

Алгоритм ключа сертификата ЦС

hashAlgorithm (enum: SHA1, SHA256, SHA384, SHA512, SHA3_256, SHA3_384, SHA3_512, RSASSA_PSS, MD5, GOST_R_34_11_2012, UNKNOWN),

Алгоритм подписи сертификата ЦС

keyBits (int32),

Длина ключа сертификата ЦС

templateId (UUID),

Идентификатор шаблона

templateName (string),

Имя шаблона

type (enum: CERTIFICATE, ROOT_CA, SUB_CA, UNKNOWN),

Тип сертификата

endEntityType (enum: ROOT_CA, SUB_CA, USER, DEVICE, UNKNOWN),

Тип субъекта

validFrom (instant),

Дата начала действия сертификата (ISO 8601)

validTo (instant),

Дата окончания действия сертификата(ISO 8601)

status (enum: ACTIVE, HOLD, REVOKE, REQUEST, UNKNOWN),

Статус сертификата

isValid (boolean),

Флаг: сертификат действует

isExpired (boolean),

Флаг: сертификат истек

actions: {

Доступные действия по выгрузке

p12 (boolean),

Флаг: выгрузка pkcs12

csr (boolean),

Флаг: выгрузка pkcs10

pem (boolean)

Флаг: выгрузка сертификата

},

 

publicKey (string),

Открытый ключ

certificateType (string),

Тип сертификата (X.509)

version (int32),

Версия сертификата

subjectKeyIdentifier (string),

Идентификатор ключа сертификата

authorityKeyIdentifier (string)

Идентификатор ключа издателя сертификата

keyUsages: {

Назначение ключа сертификата

id (uuid),

Идентификатор элемента

code (enum: DIGITAL_SIGNATURE, NON_REPUDIATION, KEY_ENCIPHERMENT, DATA_ENCIPHERMENT, KEY_AGREEMENT, KEY_CERT_SIGN, CRL_SIGN, ENCIPHER_ONLY, DECIPHER_ONLY, UNKNOWN),

Перечисление использования ключа

value (string),

Наименование элемента

description (string)

Описание использования ключа

},

 

extendedKeyUsages: {

Расширенное назначение ключа сертификата

id (uuid),

Идентификатор элемента

value (string),

Наименование элемента

oid (string),

OID назначения

description (string),

Описание использования ключа

updated (instant),

Время обновления (ISO 8601)

created (instant),

Время создания (ISO 8601)

default (boolean)

Флаг: расширенное использование по умолчанию

},

Описание OID

ca (boolean),

Флаг: сертификат ЦС

revocation: {

Сведения об отзыве сертификата ЦС

date (instant),

Дата отзыва

number (int4),

Код причины отзыва

value (string)

Значение причины отзыва

},

 

aiaUrls (string[]),

URL AIA

ocspUrls (string[]),

URL OCSP

crlUrls (string[]),

URL CRL

deltaCrlUrls (string[]),

URL Delta CRL

userId (uuid),

Идентификатор субъекта

subjectId (uuid),

Идентификатор субъекта

created (instant)

Время создания (ISO 8601)

updated (instant),

Время обновления (ISO 8601)

}

 

Пример использования метода

curl -k --location 'https://172.17.152.213/certificate-authority-service/api/v3/public/certificates/fingerprint/1709af7e2719039b5666e9d1cf35cd45f2e61816' \
 
--header 'Cookie: token=eyJhbGciOiJSUzUxMiJ9.eyJzZXNzaW9uSWQiOiI2ZTA5MDg3OC1kN2QzLTRkZTgtOTdhMi1iYTYyZTA0ODYzNjYiLCJpYXQiOjE3MDIzMDc2NTUsImV4cCI6MTcwMjMwNzgzNX0.IBwP4OqcR2T1yJiTeOyzHjMm3m2nFR1CXUb64yfxfE0rZeJ4BnTILcqYsQdFCUNcWK8e9xVnoLEGGdx6cDNyXyxBrJUs2IdcvzMtns7m9EQCqtrvtispInoLtGqYsuh_ZlxsIQxm3uTX-cfTedLgdrjgrgJCELvyV-w7Rr9-mjSOhGXoeYqhsCYciwVn29Ye6o-CjB9PIr4HN72W4Ng1yDT0OVSYA_UlD-1bu3OO87a6L9NoOJlK9wiCKVyv9hDSEfMOngWe-0MOEBSKs1dN9wiRgjQ9Hnk2B5bXzqZM2s8ZeUJ_EHgNxlx5sjwV2iXb3y3tcIRony5EvwYf8X7qPw'

Пример ответа на обращение к методу

{
 
    "status": 200,
 
    "data": {
 
        "id": "00001a1f-75cf-4f3d-8160-fb3ac46b937d",
 
        "chain": {
 
            "id": "00001a1f-75cf-4f3d-8160-fb3ac46b937d",
 
            "name": "UserTest1425",
 
            "subjectDN": {
 
                "CN": [
 
                    "UserTest1425"
 
                ]
 
            },
 
            "issuer": {
 
                "id": "6f89cfdb-fcb8-4d8a-a0f8-e258fc1c4b5f",
 
                "name": "SUB_CA_INFORM",
 
                "subjectDN": {
 
                    "CN": [
 
                        "SUB_CA_INFORM"
 
                    ],
 
                    "OU": [
 
                        "Department"
 
                    ],
 
                    "O": [
 
                        "organization"
 
                    ],
 
                    "L": [
 
                        "City"
 
                    ],
 
                    "C": [
 
                        "RU"
 
                    ],
 
                    "DC": [
 
                        "Component"
 
                    ]
 
                },
 
                "issuer": {
 
                    "id": "7501beab-e119-4e66-b853-6d9d2c9dc311",
 
                    "name": "aladdin",
 
                    "subjectDN": {
 
                        "CN": [
 
                            "aladdin"
 
                        ],
 
                        "OU": [
 
                            "Department"
 
                        ],
 
                        "O": [
 
                            "organization"
 
                        ],
 
                        "L": [
 
                            "City"
 
                        ],
 
                        "C": [
 
                            "RU"
 
                        ],
 
                        "DC": [
 
                            "Component"
 
                        ]
 
                    },
 
                    "issuer": null
 
                }
 
            }
 
        },
 
        "serialnumber": "4d6b853f3eed0e5c9029c49ae208393d3c7da846",
 
        "fingerprint": "1709af7e2719039b5666e9d1cf35cd45f2e61816",
 
        "name": "UserTest1425",
 
        "issuerId": "6f89cfdb-fcb8-4d8a-a0f8-e258fc1c4b5f",
 
        "issuerDN": {
 
            "CN": [
 
                "SUB_CA_INFORM"
 
            ],
 
            "OU": [
 
                "Department"
 
            ],
 
            "O": [
 
                "organization"
 
            ],
 
            "L": [
 
                "City"
 
            ],
 
            "C": [
 
                "RU"
 
            ],
 
            "DC": [
 
                "Component"
 
            ]
 
        },
 
        "subjectDN": {
 
            "CN": [
 
                "UserTest1425"
 
            ]
 
        },
 
        "subjectAltName": {
 
            "RFC822NAME": [
 
                "user_test1425@example.com"
 
            ],
 
            "MS_UPN": [
 
                "user_test1425@example.com"
 
            ]
 
        },
 
        "keyAlgorithm": "RSA",
 
        "hashAlgorithm": "SHA256",
 
        "keyBits": 2048,
 
        "templateId": "aa03e458-50cd-46b8-82cd-d5612ed3b647",
 
        "templateName": "Smartcard Logon",
 
        "type": "CERTIFICATE",
 
        "endEntityType": "USER"        "validFrom": "2024-02-01T16:04:36Z",
 
        "validTo": "2026-01-31T16:04:36Z",
 
        "status": "REVOKE",
 
        "isValid": true,
 
        "isExpired": false,
 
        "actions": {
 
            "p12": true,
 
            "pem": true,
 
            "csr": false
 
        },
 
        "publicKey": "Sun RSA public key, 2048 bits\n  params: null\n  modulus: 16684524147953046208914603255158045592739327717136666634182536676609173596349409564976055764239529437203757589454401711720660963381814054609190027425234429644565424993223747579999907234270638034596830826027128654799803444905343427983513174219151696233130070103962650510551676666328973030704003137374468511101302050310646693768275803790727297109325921029427451316427896614112688527247678871772419372494170382138289087148488994670627339973262556438293884607389237698421303892569563029302741553379315509797255948748261221620490865455506427175926276718060091023744300977965399959233728690205975309521496783948010104967979\n  public exponent: 65537",
 
        "certificateType": "X.509",
 
        "version": 3,
 
        "subjectKeyIdentifier": "14f2bde31d8dfc74e7d2483e609e4147bfa17dac",
 
        "authorityKeyIdentifier": "7c18ee16b61ff0163e230f147a5da9891ba8208d",
 
        "keyUsages": [
 
            {
 
                "id": "31a1b2a8-e197-47e4-8cd7-2d463f83166f",
 
                "code": "DIGITAL_SIGNATURE",
 
                "value": "Digital signature",
 
                "description": "Цифровая подпись"
 
            },
 
            {
 
                "id": "519e5b6c-9d21-4478-97dd-f0e09c593151",
 
                "code": "NON_REPUDIATION",
 
                "value": "Non-repudiation",
 
                "description": "Подтверждение подлинности"
 
            },
 
            {
 
                "id": "4973c634-29a2-4f6a-903e-e6b2313ab0eb",
 
                "code": "KEY_ENCIPHERMENT",
 
                "value": "Key encipherment",
 
                "description": "Шифрование ключей"
 
            },
 
            {
 
                "id": "834d6f41-5d03-43e2-9b1c-82da036eed75",
 
                "code": "DATA_ENCIPHERMENT",
 
                "value": "Data encipherment",
 
                "description": "Шифрование данных"
 
            }
 
        ],
 
        "extendedKeyUsages": [
 
            {
 
                "id": "b170dc22-c502-4c90-800c-d883f2105c44",
 
                "code": "CLIENT_AUTHENTICATION",
 
                "value": "Client Authentication",
 
                "oid": "1.3.6.1.5.5.7.3.2",
 
                "description": "Аутентификация клиента"
 
            },
 
            {
 
                "id": "0848b618-2a61-42f8-be8d-192b87d73f92",
 
                "code": "EMAIL_PROTECTION",
 
                "value": "Email Protection",
 
                "oid": "1.3.6.1.5.5.7.3.4",
 
                "description": "Защита электронной почты"
 
            },
 
            {
 
                "id": "9f40092b-d5e1-4c34-8912-45ddc6971f2e",
 
                "code": "MS_SMART_CARD_LOGON",
 
                "value": "MS Smart Card Logon",
 
                "oid": "1.3.6.1.4.1.311.20.2.2",
 
                "description": "Вход с MS смарт-картой"
 
            }
 
        ],
 
        "ca": false,
 
        "revocation": {
 
            "date": "2024-02-02T15:31:45Z",
 
            "number": 2,
 
            "value": "Компрометация центра сертификации"
 
        },
 
        "aiaUrls": [
 
            "http://192.168.0.125:8080/aecaCdp/api/v3/aia/get-aia/2"
 
        ],
 
        "ocspUrls": [
 
            "http://192.168.0.125:8080/aeca-va/ocsp"
 
        ],
 
        "crlUrls": [
 
            "http://192.168.0.125:8080/aecaCdp/api/v3/crl/get-crl/1"
 
        ],
 
        "deltaCrlUrls": [],
 
        "userId": null,
 
        "subjectId": null,
 
        "created": "2024-02-01T16:04:36.328403Z",
 
        "updated": "2024-02-02T15:31:45.495858Z"
 
    }
 
}

Метод отзыва (приостановки) сертификата по идентификатору

PUT API – Отзыв (приостановка) сертификата по идентификатору

Метод доступен администратору и оператору при наличии полномочий

URL – certificate-authority-service/api/v3/public/certificates/{id}/revoke

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A сертификаты/revokeById

Query

{

id (UUID)

ID сертификата

}

 

Request

{

reason (enum: UNSPECIFIED, KEY_COMPROMISE, CA_COMPROMISE, AFFILIATION_CHANGED, SUPERSEDED, CESSATION_OF_OPERATION, CERTIFICATE_HOLD, REMOVE_FROM_CRL, PRIVILEGE_WITHDRAWN, AA_COMPROMISE, UNKNOWN)

Причина отзыва (приостановки)

}

 

Response

-

При указании значения «CERTIFICATE_HOLD» в параметре reason сертификат будет приостановлен, а не отозван.

Метод активации сертификата по идентификатору

PUT API – Активация сертификата по идентификатору

Метод доступен администратору и оператору при наличии полномочий

URL – certificate-authority-service/api/v3/public/certificates/{id}/reactivate

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A сертификаты/reactivateById

Query

{

id (UUID)

ID сертификата

}

 

Request

-

Response

-

Метод публикации сертификата в РС по идентификатору

PUT API – Публикация сертификата в ресурсную систему

Метод доступен администратору и оператору при наличии полномочий

URL – certificate-authority-service/api/v3/public/certificates/{id}/publish

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A сертификаты/publishById

Query

 

{

 

id (uuid)

Идентификатор сертификата

}

 

Request

 

-

 

Response

 

-

 

Метод расшифровки контейнера сертификата

POST API – Расшифровка контейнера сертификата

Метод доступен администратору

URL – certificate-authority-service/api/v3/public/parse/pkcs12

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A контейнеры сертификатов/parse

Query


Request

 

{


container: {

Файл контейнера

    contentType (string) [опционально],

Тип загружаемого файла (HTTP MediaType) - application/octet-stream)

    fileName (string) [опционально],

Имя загружаемого файла

    data (string:binary)

Содержимое загружаемого файла (массив байт в Base64)

},


password(string),

Пароль от контейнера

templateId (UUID)

Идентификатор шаблона

}


Response

 

{

Ответ JSON в HTTP-body

serialnumber (string),

Серийный номер сертификата

fingerprint (string),

Фингерпринт сертификата

name (string),

Имя сертификата (на основе CN)

issuerDN: {

Имя субъекта издателя сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта издателя из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},


subjectDN: {

Имя субъекта сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},


subjectAltName: {

Альтернативное имя субъекта сертификата

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

Поля альтернативного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},


validFrom (instant),

Дата начала действия сертификата (ISO 8601)

validTo (instant),

Дата окончания действия сертификата(ISO 8601)

privateKey: {

Файл закрытого ключа

    contentType (string),

Тип загружаемого файла (HTTP MediaType)

    fileName (string),

Имя загружаемого файла

    data (string:binary)

Содержимое загружаемого файла (массив байт в Base64)

},


certificate: {

Файл сертификата

    contentType (string),

Тип загружаемого файла (HTTP MediaType)

    fileName (string),

Имя загружаемого файла

    data (string:binary)

Содержимое загружаемого файла (массив байт в Base64)

},


keyUsages: {

Назначение ключа сертификата

    id (uuid),

Идентификатор элемента

code (enum: DIGITAL_SIGNATURE, NON_REPUDIATION, KEY_ENCIPHERMENT, DATA_ENCIPHERMENT, KEY_AGREEMENT, KEY_CERT_SIGN, CRL_SIGN, ENCIPHER_ONLY, DECIPHER_ONLY, UNKNOWN),

Перечисление использования ключа

    value (string),

Наименование элемента

    description (string)

Описание использования ключа

},


extendedKeyUsages: {

Расширенное назначение ключа сертификата

    id (uuid),

Идентификатор назначения

    value (string),

Наименование элемента

    oid (string),

OID назначения

    description (string),

Описание использования ключа

    updated (instant),

Время обновления (ISO 8601)

    created (instant),

Время создания (ISO 8601)

    default (boolean)

Флаг: расширенное использование по умолчанию

},

Описание OID

ca (boolean)

Флаг: сертификат ЦС

}


Пример использования метода

curl -k -X 'POST' \

  'https://192.168.111.100/certificate-authority-service/api/v3/public/parse/pkcs12' \

  -H 'accept: */*' \

  -H 'Content-Type: application/json' \

  -H 'Cookie: token=eyJhbGciOiJTSEE1MTJ3aXRoUlNBIn0.eyJzZXNzaW9uSWQiOiI1ZDAxMDQwZS04NjM2LTRjNTgtYWJlYi1hYTdjZTEyYzRiNWUiLCJpYXQiOjE3MzgwNjY5NDEsImV4cCI6MTczODA2NzEyMX0.aFT5R1g9YU8UAK7dNVz_D4bbwoJwFtrSeL1b7fAXYdmVSDFLXXgvqq0_oFva5Ek3Hw3OzL9ean_B4odiUwjLSWiIkvWQBFMXNQwrqnoSpK8ST2vyyWwDGelfqcXOawzNSw6lHItozcZ-8gO8BQ8L8_1IutqXaZt4TA1JYNpoViSY5yb2IFooAsHoR0pZoYQAgymlYC8_mpaxOL6y8KDoR6SHVr0kruRiGzJKoGyKXBrjhtiNM4Fqf03pvpouA8dQo1CJYeqsJv-7nlMju_zv3SvUQNpWw3znbd6RUgs_wNCbAQSh0l8vaaPBRUX07yHLtbljMDdSMYn-lGJk5nTu2w' \

  -d '{

  "container": {

    "contentType": "application/octet-stream",

    "fileName": "operator.p12",

    "data": "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"

  },

  "password": "Qwerty123",

  "templateId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"

}'
  • Значение поля data в запросе можно получить, выполнив команду:
openssl base64 -in operator.p12 | tr -d '\n'

где operator.p12 – файл сертификата.

Пример ответа на обращение к методу

{
 
  "status": 200,
 
  "data": {
 
    "serialnumber": "5d53f9f8c9d192b77fa4d0d23026d48fb69a48cb",
 
    "fingerprint": "9678302bd909deef55bcf4fbc4e30bfd8236a8a9",
 
    "name": "operator",
 
    "issuerDN": {
 
      "CN": [
 
        "RootCA"
 
      ],
 
      "OU": [
 
        "Department"
 
      ],
 
      "O": [
 
        "organization"
 
      ],
 
      "L": [
 
        "City"
 
      ],
 
      "DC": [
 
        "Component"
 
      ],
 
      "C": [
 
        "RU"
 
      ]
 
    },
 
    "subjectDN": {
 
      "CN": [
 
        "operator"
 
      ]
 
    },
 
    "subjectAltName": {},
 
    "validFrom": "2025-01-28T12:17:51Z",
 
    "validTo": "2027-01-28T12:17:51Z",
 
    "privateKey": {
 
      "contentType": "application/octet-stream",
 
      "fileName": "operator.key",
 
      "data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBenJMWlUxUFRSNllPMXhSbjQzTmFDeXd4RnpKeGMvS2pLUlBXc01Qd05FVDZWTGVQCmlBUDkySWZhZnp0S1Y3VU9IMFIvdm5aQjN2cjF6bjJoYmtNMHRlZ0FNL1BtVGtCM3dDVUlmSTN2Y1FjRDR0SlgKb29DZ3JCUExrTDdFODFRTkdPbDBwTDZ6QkdVMmw5TGxqa0h2K1NFU2hlUE5VWEhJanptL0tQOEhlMWliRDUwSgpyZXl5dDErSFZIUXFEOWxtdEtVdkh6NGlkOFg1OTRmVFc1L3QyTy9KbUkwS2Z3aVRvdXlhSVJGeGNJcEt3NXQxCjZRSWtoSFBKUWtVMXcyWElkTDJ3ZXVrUEVhUGU2N2hpMWg1SHh4WW1OMnFabGVWWDNuVTM1Vm5sd2Z3WW9PM1AKdStocmUxL20yTDRVYW9tWW1OVHJ4L3VsTWlnNy8vZUozaTU1MlFJREFRQUJBb0lCQUJoTmpkRTIrTTl5c2ttKwpZZGtyejgxaXZxcGpNVlVBVlVnUUI3VU1zclpZbW1UaDJNL1ZwVkFEYURDL3ZrWForVTA2bXZrQVUwNG1ESWNBCi9UMDNUSEFyZFRPbWxLQ0VncmYrT3JWWFpHenlGZFpDWkZDc1prZlpRM3p6T3ptL2V4TS81c20wak55aVVHVVIKUkZHaHhkY1JXUW5TVHlxcGNkc0tQNFJRMlJhNnpneUJZVGM0UDdCeXFyLzZWcGxFTEJEdC9kUVp6YmY2T3FZYQpWaEd0REtqTDlmdVhGMmNadFlyejh2ODFqWk1zYi9WYVRFNDhSaVR4NlBPUlVVTHYzanRBZ2Rtd1ArN3RwbU5LClNiS3o3QnBtOGR3VDBRTXBHUWd3ZDhCS3BMaVA4YlBoZC8xcm1pTzgvUzgwS2lpdnN6eFdKZUhGVWdMWWNNMTcKbUV4V3lzRUNnWUVBM1FZQnZTcWo0Q3pLK1NxeXlDT1p1UDdQb3hCYjJ2SXkxdzhHYk1jc2Q2Z2M0UlRNdEwvQwppZUNSVW8vSEc0WGRETXhFcnBNV0VIRXN6dHZqWFQrc08zNDJlZGhTNExObW0rMEgvSGcrOXREVHRWQldjenFUCklCRkUrSzhFRW5OM1pNV1J3bWxiTzd3TTh2MkUwRzBNSlkyc2htRTErNWNkQVNpblRkWUhZSmtDZ1lFQTcyaUYKZ0hIUGhJaFZrVFhxZ21na201aTBWampoaTlKdnk4QWVzT1RlMDFzWFlQcEpZdUJKOHhBWDRaQ3FjV2FacjYxVgo3ejBtOVBGVnBCZkN0UnAzcjRUSmg4aG5LTEdSRytDYzIyMHB3d2RrZHZDcWRUUG5OdVFNdUx0Qi9LMnc3d1BzCk5XejZHSnZxdytqdTErNURJREdjendqNFUyUldHckE3Qm1ySGEwRUNnWUVBbkk3aXNISUJ2b3M4QXg3aG9LN0cKOXFsWHZyT1p2UThPUUJPZWczTFo1ckFvTks4ZENYTkRnNUtVblp6R2RwSnRyK0VKVFhkV2k3TC9BRS8xVDFvSQp6K05wQnduYU90d1k5SjREcUN3c3ZYdlNXbjVibmllQmk1ZHYrWTlQSFJxNUdhSnd5dnNCNnVBYmRBdHNCbzhYCnFZb2ZDTmpXK2kxaUdDNEp4REswNnhFQ2dZRUF4TUZzL3B3S2hZeWFia1lXWG1pQ3RaSHhtKzhSaHAxREhmdmQKL1ZtTHU3NWdYMll6aTl4elNoek8wNlhXUG02cEhoVmh5OFhCVDR0TDdCbE8veElxalFpZnJFVkthc3BNVE5IegpkKzZtWk0rZGhKYlVNSkNnbEo4bHlXaTBtWnFTRUUxMEFwQjJsbVVGczA2cmhMRWZYOFVHYjZ5YWtjYWpjVG1tCnVPWm0wRUVDZ1lFQWxHaEhuVVEwSmxsYWhocS8rMWRBWENaL1BjQ3BDUTR4M2w4NXU2bnpKcVRTbDNBa0RPWjEKOU02ZytYK2RIUEh0UWFDc1NVVEpUYXdmandKMDB2bXg0NTdrbzBGYkgxWFRNSENTcVQ5RWxIaklUZGhWZWt1cQp0TE9WWU9GV2tlSzRlUHpDRnZvTTVyR0lRTTlSVGJQaTdsM2RrS1RKSXFMKzF0RVovQXhUQTJZPQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo="
 
    },
 
    "certificate": {
 
      "contentType": "application/octet-stream",
 
      "fileName": "operator.pem",
 
      "data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVsRENDQW55Z0F3SUJBZ0lVWFZQNStNblJrcmQvcE5EU01DYlVqN2FhU01zd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2RERUxNQWtHQTFVRUJoTUNVbFV4R1RBWEJnb0praWFKay9Jc1pBRVpGZ2xEYjIxd2IyNWxiblF4RFRBTApCZ05WQkFjTUJFTnBkSGt4RlRBVEJnTlZCQW9NREc5eVoyRnVhWHBoZEdsdmJqRVRNQkVHQTFVRUN3d0tSR1Z3CllYSjBiV1Z1ZERFUE1BMEdBMVVFQXd3R1VtOXZkRU5CTUI0WERUSTFNREV5T0RFeU1UYzFNVm9YRFRJM01ERXkKT0RFeU1UYzFNVm93RXpFUk1BOEdBMVVFQXd3SWIzQmxjbUYwYjNJd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQQpBNElCRHdBd2dnRUtBb0lCQVFET3N0bFRVOU5IcGc3WEZHZmpjMW9MTERFWE1uRno4cU1wRTlhd3cvQTBSUHBVCnQ0K0lBLzNZaDlwL08wcFh0UTRmUkgrK2RrSGUrdlhPZmFGdVF6UzE2QUF6OCtaT1FIZkFKUWg4amU5eEJ3UGkKMGxlaWdLQ3NFOHVRdnNUelZBMFk2WFNrdnJNRVpUYVgwdVdPUWUvNUlSS0Y0ODFSY2NpUE9iOG8vd2Q3V0pzUApuUW10N0xLM1g0ZFVkQ29QMldhMHBTOGZQaUozeGZuM2g5TmJuKzNZNzhtWWpRcC9DSk9pN0pvaEVYRndpa3JECm0zWHBBaVNFYzhsQ1JUWERaY2gwdmJCNjZROFJvOTdydUdMV0hrZkhGaVkzYXBtVjVWZmVkVGZsV2VYQi9CaWcKN2MrNzZHdDdYK2JZdmhScWlaaVkxT3ZIKzZVeUtEdi85NG5lTG5uWkFnTUJBQUdqZnpCOU1Bd0dBMVVkRXdFQgovd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVV6ZlNoYURXY254cW1laTA2djg0YXFHNHVhYzh3SFFZRFZSMGxCQll3CkZBWUlLd1lCQlFVSEF3SUdDQ3NHQVFVRkJ3TUVNQjBHQTFVZERnUVdCQlF3UEtoQWdTQ0lGbEJ0REhVZGpUbnYKWC9KMldEQU9CZ05WSFE4QkFmOEVCQU1DQmVBd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFDWWovTWk0WkZxQQpBOUd0QlEwN1Z6dDFPMGRjVWt5bVhLOUZOVUhYNEQ0SUFOZ1Ava2Yrdnl6YzVrd0Y4YVI5VzZKcTh6dU5OOUlwCnpwNllGQXl2UWpoeUJ4YWV5Q2d4dkdVdFZsYmVZUE9FZ2RjenhoQ2hyMUc4YTN3S0JPcWd0bzZocnhvZGlkd0IKbHVzdHA2dHhLUGRoQVBORXRvU2lKR2laZzlRZm5OakVkNGU3eXhGaXFHQTRJQkZVSUZhYVpEeW90VDVPNlRFRQpWaUY0cTloUVY0OHk2akJYYWlrVkZtdGpjRXUySmRESmpmb3JOVkxMcDNkdGFzT2Q0QUJRV0pPbFZFSGQzL0FGClRCR0ZFWC94bHRZN3l6NDQwU0prRm45TXo4bytjbkM0RHl5TkxQWkI4N2RWRWZ3U0hhWVM3RUtNbEVEVndUcU4KcXlQMURLOFJMV1VtaXBGUmo1RmdwT0loWnVwbGU0a3A1T2MwU2krL0RZWmpZZ0pxUnBsWVUwT1IxUHNONjRHbQo5Q05xN3ZnOE4xSlFBVkVRWHlsS1BpczlORnYxWWtrMFErUnpTRGF4blRiRm9YU2tkd2g2Tk5tdUtwTHZYZ3VhCmVuUW1Ba2tpL0g1bFNadDRqVWhvOHQwZFJyV2k5U09yRGxEVU9WZkI3ZWFJek1lNEd4WFdBeG1xUmZnelhYRk0KcUZ5SkprQUpuUW1MdHNmb3EvT0RzaWJIbnlpZ1RHUWNjT0J6bWRPU1MwZEFKZCtLTkhNVUxtUUJTYTIxT0xjRgplVnBBdzM1N3VKLysxU3ZaNzlGckZ0WXBscFN2L0ZzR2tUZFpHWm53Z1FJYmlQU0p6VCt2QlBTV3B1Vk55YVowCmdNczNOWHZwS2dzb1FPT0JlYW1zZ1MxaW9DV1U0ZDUxCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"
 
    },
 
    "keyUsages": [
 
      {
 
        "id": "31a1b2a8-e197-47e4-8cd7-2d463f83166f",
 
        "code": "DIGITAL_SIGNATURE",
 
        "description": "Цифровая подпись",
 
        "value": "Digital signature"
 
      },
 
      {
 
        "id": "519e5b6c-9d21-4478-97dd-f0e09c593151",
 
        "code": "NON_REPUDIATION",
 
        "description": "Подтверждение подлинности",
 
        "value": "Non-repudiation"
 
      },
 
      {
 
        "id": "4973c634-29a2-4f6a-903e-e6b2313ab0eb",
 
        "code": "KEY_ENCIPHERMENT",
 
        "description": "Шифрование ключей",
 
        "value": "Key encipherment"
 
      }
 
    ],
 
    "extendedKeyUsages": [
 
      {
 
        "id": "b170dc22-c502-4c90-800c-d883f2105c44",
 
        "oid": "1.3.6.1.5.5.7.3.2",
 
        "value": "Аутентификация клиента",
 
        "description": "Сертификат может использоваться при установлении защищенного соединения по протоколу TLS для подтверждения подлинности клиента.",
 
        "created": "2024-07-09T18:56:51.928948Z",
 
        "updated": "2024-07-09T18:56:52.118579Z",
 
        "default": true
 
      },
 
      {
 
        "id": "0848b618-2a61-42f8-be8d-192b87d73f92",
 
        "oid": "1.3.6.1.5.5.7.3.4",
 
        "value": "Защита электронной почты",
 
        "description": "Сертификат может использоваться для защиты электронной почты (подпись, шифрование, соглашение о ключах).",
 
        "created": "2024-07-09T18:56:51.928948Z",
 
        "updated": "2024-07-09T18:56:52.118579Z",
 
        "default": true
 
      }
 
    ],
 
    "ca": false
 
  }
 
}

Метод расшифровки сертификата

POST API – Расшифровка сертификата

Метод доступен администратору

URL – certificate-authority-service/api/v3/public/parse/pem

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A контейнеры сертификатов/parse_2

Query


Request

 

{


request: {

Файл сертификата

    contentType (string) [опционально],

Тип загружаемого файла (HTTP MediaType) - application/octet-stream)

    fileName (string) [опционально],

Имя загружаемого файла

    data (string:binary)

Содержимое загружаемого файла (массив байт в Base64)

}


}


Response

 

{

Ответ JSON в HTTP-body

id (UUID),

Идентификатор сертификата

chain: {

Цепочка сертификатов (рекурсивный объект)

id (UUID),

Идентификатор сертификата

name (string),

Имя сертификата (на основе CN)

subjectDN: {

Имя субъекта сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра

},


issuer: {…}

Издатель сертификата (вложенный объект)

},


serialnumber (string),

Серийный номер сертификата

fingerprint (string),

Фингерпринт сертификата

name (string),

Имя сертификата (на основе CN)

issuerId (UUID),

Идентификатор издателя сертификата

issuerDN: {

Имя субъекта издателя сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта издателя из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},


subjectDN: {

Имя субъекта сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},


subjectAltName: {

Альтернативное имя субъекта сертификата

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

Поля альтернативного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},


keyAlgorithm (enum: RSA, ECDSA, GOST_R_34_10_2012, UNKNOWN),

Алгоритм ключа сертификата ЦС

hashAlgorithm (enum: SHA1, SHA256, SHA384, SHA512, SHA3_256, SHA3_384, SHA3_512, RSASSA_PSS, MD5, GOST_R_34_11_2012, UNKNOWN),

Алгоритм подписи сертификата ЦС

keyBits (int32),

Длина ключа сертификата ЦС

templateId (UUID),

Идентификатор шаблона

templateName (string),

Имя шаблона

type (enum: CERTIFICATE, ROOT_CA, SUB_CA, UNKNOWN),

Тип сертификата

endEntityType (enum: ROOT_CA, SUB_CA, USER, DEVICE, UNKNOWN),

Тип субъекта

validFrom (instant),

Дата начала действия сертификата (ISO 8601)

validTo (instant),

Дата окончания действия сертификата(ISO 8601)

status (enum: ACTIVE, HOLD, REVOKE, REQUEST, UNKNOWN),

Статус сертификата

isValid (boolean),

Флаг: сертификат действует

isExpired (boolean),

Флаг: сертификат истек

actions: {

Доступные действия по выгрузке

p12 (boolean),

Флаг: выгрузка pkcs12

csr (boolean),

Флаг: выгрузка pkcs10

pem (boolean)

Флаг: выгрузка сертификата

},


publicKey (string),

Открытый ключ

certificateType (string),

Тип сертификата (X.509)

version (int32),

Версия сертификата

subjectKeyIdentifier (string),

Идентификатор ключа сертификата

authorityKeyIdentifier (string)

Идентификатор ключа издателя сертификата

keyUsages: {

Назначение ключа сертификата

id (uuid),

Идентификатор элемента

code (enum: DIGITAL_SIGNATURE, NON_REPUDIATION, KEY_ENCIPHERMENT, DATA_ENCIPHERMENT, KEY_AGREEMENT, KEY_CERT_SIGN, CRL_SIGN, ENCIPHER_ONLY, DECIPHER_ONLY, UNKNOWN),

Перечисление использования ключа

value (string),

Наименование элемента

description (string)

Описание использования ключа

},


extendedKeyUsages: {

Расширенное назначение ключа сертификата

id (uuid),

Идентификатор назначения

value (string),

Наименование элемента

oid (string),

OID назначения

description (string),

Описание использования ключа

updated (instant),

Время обновления (ISO 8601)

created (instant),

Время создания (ISO 8601)

default (boolean)

Флаг: расширенное использование по умолчанию

},

Описание OID

ca (boolean),

Флаг: сертификат ЦС

revocation: {

Сведения об отзыве сертификата ЦС

date (instant),

Дата отзыва

number (int4),

Код причины отзыва

value (string)

Значение причины отзыва

},


aiaUrls (string[]),

URL AIA

ocspUrls (string[]),

URL OCSP

crlUrls (string[]),

URL CRL

deltaCrlUrls (string[]),

URL Delta CRL

userId (uuid),

Идентификатор субъекта

subjectId (uuid),

Идентификатор субъекта

created (instant)

Время создания (ISO 8601)

updated (instant),

Время обновления (ISO 8601)

}


Пример использования метода

curl -k -X 'POST' \
 
  'https://192.168.111.100/certificate-authority-service/api/v3/public/parse/pem' \
 
  -H 'accept: */*' \
 
  -H 'Content-Type: application/json' \
 
  -H 'Cookie: token=eyJhbGciOiJHT1NUMzQxMV8yMDEyXzUxMndpdGhHT1NUMzQxMF8yMDEyXzUxMiJ9.eyJzZXNzaW9uSWQiOiIwYTM1MmZlNi00NmE5LTQ2ZWMtYWU1OC05N2VlMWI5ZTQ5NDIiLCJpYXQiOjE3MzgwMzA5MjUsImV4cCI6MTczODAzMTEwNX0.R806fglFGpp7dR4WPDs3vOdbacV89vtGCTlds61v9yyPz5wofIQeHoI6HhN-ahKBf8drsB9pSDbPTuvGSvYNcV-iB_l-fWyfOTSwubG5q-6etbHvWrQDPNz8Q9p_5SeN87OZllJE1_i_qIsTCxEsuJlyGjPWTnG3qIPZd2uxExo' \
 
  -d '{
 
  "request": {
 
    "data": "SXNzdWVyOiBDTj1TVUJfQ0FfSU5GT1JNLE89dGVzdApTdWJqZWN0OiBDTj1EZW5hIE1hcnNoYWxsCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlEaWpDQ0FuS2dBd0lCQWdJVWV3OXAzVVVBK1AwUU5XaUJjTUZGaFFWamFpUXdEUVlKS29aSWh2Y05BUUVMCkJRQXdKekVOTUFzR0ExVUVDZ3dFZEdWemRERVdNQlFHQTFVRUF3d05VMVZDWDBOQlgwbE9SazlTVFRBZUZ3MHkKTkRFd01qZ3hNakk0TXpoYUZ3MHlOakV3TWpneE1qSTRNemhhTUJneEZqQVVCZ05WQkFNTURVUmxibUVnVFdGeQpjMmhoYkd3d2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFLcFVvQ01mRXNZQkluZXN2YXF2Cm5SK0diNFFrdHhSOWpPdXQrSXlyOW9oa1ptdEtmTWU3cXowR0twUFRYaTZ0bmFzSlZwRUlmbGJlM0dsNXUwSDUKSkZBS0E4RmQ1NWVGOHJ6Q28zUzhoTE5aWGNiVDkrZXpWL3ZraG9WZmtORkhhWXRUZXlNSmlhdUFtZ1IvUm5TbApHLzdqdGZsS3RKRDk3bW9Ta0M4eXlCTVpBZ01CQUFHamdnRS9NSUlCT3pBTUJnTlZIUk1CQWY4RUFqQUFNQjhHCkExVWRJd1FZTUJhQUZGMjczZEowVjF0SGRRdEg4Z1JOV0ZHY3MxV1BNRXNHQTFVZEVRUkVNRUtCRjFSb1pXNTAKWlhKaFoyVTROMEIwWlhOMExteHZZMkZzb0NjR0Npc0dBUVFCZ2pjVUFnT2dHUXdYVkdobGJuUmxjbUZuWlRnMwpRSFJsYzNRdWJHOWpZV3d3S1FZRFZSMGxCQ0l3SUFZSUt3WUJCUVVIQXdJR0NDc0dBUVVGQndNRUJnb3JCZ0VFCkFZSTNGQUlDTUIwR0ExVWREZ1FXQkJUUDZCZ1BkNEl6NnRsOTR1WWIwTEY3c21ON2lEQU9CZ05WSFE4QkFmOEUKQkFNQ0JQQXdRUVlJS3dZQkJRVUhBUUVFTlRBek1COEdDQ3NHQVFVRkJ6QUNoaE5vZEhSd2N6b3ZMM1JsYzNRdApZV2xoTG5KMU1CQUdDQ3NHQVFVRkJ6QUJoZ1JFU3pJd01DQUdBMVVkSHdRWk1CY3dGYUFUb0JHR0QyaDBkSEJ6Ck9pOHZkR1Z6ZEM1eWRUQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFBQXBaNVdQRlhxT0tnUnpUaEY0VERudnAKM2F4ZFNIQjVKcmo3bmtGY1hyTTlOZjdSUUFjVUhsNUwvNXhYRFdtTmUwanREcTFtbDlYK0Z6NVBiQ0FZUnI5ZgpBdlJORXQzTkIyNmVzY0laUnJjV05pMDFzWmtBUzBkQ3ZmTlpOS3VMT3UrZStoTCsxSmZ1Uk53SHhndGR4ZGpNCldNWmIyeG81WXpuMUJvYW5hQ3pDZFhwc0piaUxLZE91UnZDallMOS9FQlZCbStZRTJQb3pvWkhpU3VQYytBMHEKM2d5NkJtRzRMY216QSsrcXpKZ2FZSis4K1lXUjZBQ0tPTHJDeWcyVkE1QUJaQW5EWnpGdDFKVFBqNXRHTzVacwoxcllmQjZRQkpPYS82eWZNbVVvRGVkVUp1dWhoUGtVbWR4dnROWlFubHJENUFVTUloaXdQV1hkdU5FbThOZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"
 
  }
 
}'
  • Значение поля data в запросе можно получить, выполнив команду:
openssl base64 -in cert.pem | tr -d '\n'

где cert.pem – файл сертификата.

Пример ответа на обращение к методу

{
 
  "status": 200,
 
  "data": {
 
    "id": "00024d9e-2c9e-4cd1-8673-7f495fa4b4d6",
 
    "chain": {
 
      "id": "00024d9e-2c9e-4cd1-8673-7f495fa4b4d6",
 
      "name": "Dena Marshall",
 
      "subjectDN": { "CN": ["Dena Marshall"] },
 
      "issuer": {
 
        "id": "473eee90-bb99-4831-9772-1a26fb0f9ed2",
 
        "name": "SUB_CA_INFORM",
 
        "subjectDN": { "CN": ["SUB_CA_INFORM"], "O": ["test"] },
 
        "issuer": {
 
          "id": "4489978c-2941-4a37-8948-8b422c66c8d6",
 
          "name": "aladdin",
 
          "subjectDN": {
 
            "CN": ["aladdin"],
 
            "OU": ["Java555"],
 
            "O": ["aladdin"],
 
            "L": ["Novosibirsk"],
 
            "DC": ["Java555"],
 
            "C": ["RU"]
 
          },
 
          "issuer": null
 
        }
 
      }
 
    },
 
    "serialnumber": "7b0f69dd4500f8fd1035688170c1458505636a24",
 
    "fingerprint": "865715305229bebcd43ea0887bbcc6137be11145",
 
    "name": "Dena Marshall",
 
    "issuerId": "473eee90-bb99-4831-9772-1a26fb0f9ed2",
 
    "issuerDN": { "CN": ["SUB_CA_INFORM"], "O": ["test"] },
 
    "subjectDN": { "CN": ["Dena Marshall"] },
 
    "subjectAltName": {
 
      "RFC822NAME": ["Thenterage87@test.local"],
 
      "MS_UPN": ["Thenterage87@test.local"]
 
    },
 
    "keyAlgorithm": "RSA",
 
    "hashAlgorithm": "SHA256",
 
    "keyBits": 1024,
 
    "templateId": "aa03e458-50cd-46b8-82cd-d5612ed3b647",
 
    "templateName": "Smartcard Logon",
 
    "type": "CERTIFICATE",
 
    "endEntityType": "USER"
 
    "validFrom": "2024-10-28T12:28:38Z",
 
    "validTo": "2026-10-28T12:28:38Z",
 
    "status": "ACTIVE",
 
    "isValid": true,
 
    "isExpired": false,
 
    "actions": { "p12": true, "pem": true, "csr": false },
 
    "publicKey": "Sun RSA public key, 1024 bits\n  params: null\n  modulus: 119610192831645138992120843342056811796194001890458701192877997702123994191478624548562568689491507184702937574407605061121115835904655806287710372534063102287029620842374068436641309113741361277296919163128760687231220570652198675703806970445639104821549716138753463094951540551128680075950344089038867665689\n  public exponent: 65537",
 
    "certificateType": "X.509",
 
    "version": 3,
 
    "subjectKeyIdentifier": "cfe8180f778233ead97de2e61bd0b17bb2637b88",
 
    "authorityKeyIdentifier": "5dbbddd274575b47750b47f2044d58519cb3558f",
 
    "keyUsages": [
 
      {
 
        "id": "31a1b2a8-e197-47e4-8cd7-2d463f83166f",
 
        "code": "DIGITAL_SIGNATURE",
 
        "description": "Цифровая подпись",
 
        "value": "Digital signature"
 
      },
 
      {
 
        "id": "519e5b6c-9d21-4478-97dd-f0e09c593151",
 
        "code": "NON_REPUDIATION",
 
        "description": "Подтверждение подлинности",
 
        "value": "Non-repudiation"
 
      },
 
      {
 
        "id": "4973c634-29a2-4f6a-903e-e6b2313ab0eb",
 
        "code": "KEY_ENCIPHERMENT",
 
        "description": "Шифрование ключей",
 
        "value": "Key encipherment"
 
      },
 
      {
 
        "id": "834d6f41-5d03-43e2-9b1c-82da036eed75",
 
        "code": "DATA_ENCIPHERMENT",
 
        "description": "Шифрование данных",
 
        "value": "Data encipherment"
 
      }
 
    ],
 
    "extendedKeyUsages": [
 
      {
 
        "id": "b170dc22-c502-4c90-800c-d883f2105c44",
 
        "oid": "1.3.6.1.5.5.7.3.2",
 
        "value": "Аутентификация клиента",
 
        "description": "Сертификат может использоваться при установлении защищенного соединения по протоколу TLS для подтверждения подлинности клиента.",
 
        "created": "2024-07-09T18:56:51.928948Z",
 
        "updated": "2024-07-09T18:56:52.118579Z",
 
        "default": true
 
      },
 
      {
 
        "id": "0848b618-2a61-42f8-be8d-192b87d73f92",
 
        "oid": "1.3.6.1.5.5.7.3.4",
 
        "value": "Защита электронной почты",
 
        "description": "Сертификат может использоваться для защиты электронной почты (подпись, шифрование, соглашение о ключах).",
 
        "created": "2024-07-09T18:56:51.928948Z",
 
        "updated": "2024-07-09T18:56:52.118579Z",
 
        "default": true
 
      },
 
      {
 
        "id": "9f40092b-d5e1-4c34-8912-45ddc6971f2e",
 
        "oid": "1.3.6.1.4.1.311.20.2.2",
 
        "value": "Вход с MS смарт-картой",
 
        "description": "Сертификат может использоваться физическим лицом для входа в систему с помощью смарт-карты.",
 
        "created": "2024-07-09T18:56:51.928948Z",
 
        "updated": "2024-07-09T18:56:52.118579Z",
 
        "default": true
 
      }
 
    ],
 
    "ca": false,
 
    "revocation": null,
 
    "aiaUrls": ["https://test-aia.ru"],
 
    "ocspUrls": ["DK20"],
 
    "crlUrls": ["https://test.ru"],
 
    "deltaCrlUrls": [],
 
    "userId": null,
 
    "subjectId": "000000a6-d0c3-4a4e-aee6-be5ad83a3ba2",
 
    "created": "2024-10-28T12:28:39.024349Z",
 
    "updated": "2024-10-28T12:28:39.024359Z"
 
  }
 
}

Метод расшифровки запроса на сертификат

POST API – Расшифровка запроса на сертификат

Метод доступен администратору

URL – certificate-authority-service/api/v3/public/parse/pkcs10

Swagger: https://HOST/external-integration-service/swagger/swagger-ui/index.html#/[v3] Контроллер%3A контейнеры сертификатов/parse_1

Query

 

Request

 

{


request: {

Файл сертификата

contentType (string) [опционально],

Тип загружаемого файла (HTTP MediaType) - application/octet-stream)

fileName (string) [опционально],

Имя загружаемого файла

data (string:binary)

Содержимое загружаемого файла (массив байт в Base64)

}


subjectName: {

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

},[опционально]

Поля отличительного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра.

Значения полей, указанные в subjectName, переопределяют значения соответствующих полей SDN запроса на сертификат, при условии, что они соответствуют значениям атрибутов субъекта.

subjectAltName: {

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

} [опционально]

Поля альтернативного имени субъекта, которое должно попасть в сертификат. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра.

Значения полей, указанные в subjectAltName, переопределяют значения соответствующих полей SAN запроса на сертификат, при условии, что они соответствуют значениям атрибутов субъекта.

}


Response

 

{

Ответ JSON в HTTP-body

name (string),

Имя сертификата (на основе CN)

subjectDN: {

Имя субъекта сертификата

(enum: CN, UID, E, EMAILADDRESS, MAIL, SN, GIVENNAME, INITIALS, SURNAME, OU, O, L, ST, DC, C, UNSTRUCTUREDADDRESS, UNSTRUCTUREDNAME, POSTALCODE, BUSINESSCATEGORY, TELEPHONENUMBER, PSEUDONYM, POSTALADDRESS, STREET, NAME, T, DN, DESCRIPTION, INN, OGRN, OGRNIP, SNILS, INNLE, UNKNOWN): string[]

Поля разделенного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},


subjectAltName: {

Альтернативное имя субъекта сертификата

(enum: RFC822NAME, DNS_NAME, IPADDRESS, DIRECTORY_NAME, UNIFORM_RESOURCE_ID, REGISTERED_ID, MS_UPN, MS_GUID, KRB5PRINCIPAL, PERMANENT_IDENTIFIER, XMPP_ADDR, SRV_NAME, SUBJECT_IDENTIFICATION_METHOD, UNKNOWN): string[]

Поля альтернативного имени субъекта из сертификата. В формате key-value. Где key – один из перечисленных в enum параметров, а value – значение параметра


},


keyAlgorithm (enum: RSA, ECDSA, GOST_R_34_10_2012, UNKNOWN),

Алгоритм ключа сертификата ЦС

keyBits (int32),

Длина ключа сертификата ЦС

subjectKeyIdentifier (string)

Идентификатор ключа сертификата

}


Пример использования метода

curl -k -X 'POST' \
 
  'https://192.168.111.100/certificate-authority-service/api/v3/public/parse/pkcs10' \
 
  -H 'accept: */*' \
 
  -H 'Content-Type: application/json' \
 
  -H 'Cookie: token=eyJhbGciOiJTSEE1MTJ3aXRoUlNBIn0.eyJzZXNzaW9uSWQiOiI1ZDAxMDQwZS04NjM2LTRjNTgtYWJlYi1hYTdjZTEyYzRiNWUiLCJpYXQiOjE3MzgwNjQ1NzAsImV4cCI6MTczODA2NDc1MH0.tgOSvc3MWwQw07grohKe_iXDqVHS_bedcBCNJkFxGg4vAxf39QP1wHjEuKPEC1BT1bvP8jGfTTlcSx1bvhPnF0q_HUumv-C_wRJj4UgKmvlXrcoY6ceyD62ITkdQ-x1zmzr0hp-XAMRQ5Y6H3NsJNloT-koEUQiCI18CYvmAZUz_mvmptULchOsfGXykFay1YPIsR2JEeAAf4fRRU5RZIWqIBj6bjcuNAiVhtdJ0hmgS0RPZcR514vpqIQQ-RaOyOD0axeIepN0Yixz9QeL2ZmpHj7gXxnFYWG9uslsizYFzQt34afYgmq7Dp-OxA5Yc5u095V9kTTbOyfSMLXaLRg' \
 
  -d '{
 
  "request": {
 
    "data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ3RqQ0NBYUFDQVFBd0V6RVJNQThHQTFVRUF3d0lWR1Z6ZERnM01UY3dnZ0VpTUEwR0NTcUdTSWIzRFFFQgpBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQzc5REtJaVQvc3gyTEVucFExWHVNcHU4MktpeTVvUlFxQTZyMHdjN1BjCmcyWFJJM0lxeHZYSjdLSWFXVWpob2FSNFlDak4vcDl5Z1RMQm0rSnJBSDNNdktWV2w0Z1p1b3hNYW1Yb2xFVnEKTlJYWW5qckczVCtzMkdaWStIM0hyMFBtSWFwODY4NFR1U3JMNzd6OGVlNHpnTEtEd05jd29Ud3g3dVR3K1RScApUSzYzdkZTeUcxQ253QmNacXR0Y2dwbmwzTkhDZW5Rci9tZ2ZzU0dSZzJLUU85U01zTFBQNnN0ZitOaG5iaHdwCm04dEtBNm9RQ1pjaTFKQytYdExLZENLWFh1QTdjeXZDd3ZBRWhBeWl6b05OMFNiUktjbC9XeUMxNDhDVlh2SkcKTHAvTnR2Z0ZlMVFOcVJUMEZSUUxvaEVuZlROKzhneWVUeGZiWGxLeDhnM25BZ01CQUFHZ1lEQmVCZ2txaGtpRwo5dzBCQ1E0eFVUQlBNQTRHQTFVZER3RUIvd1FFQXdJQUFEQTlCZ05WSFJFRU5qQTBnUkIwWlhOME9EY3hOMEJ0CllXbHNMbkoxb0NBR0Npc0dBUVFCZ2pjVUFnT2dFZ3dRZEdWemREZzNNVGRBYldGcGJDNXlkVEFMQmdrcWhraUcKOXcwQkFRVURnZ0VCQUUzRVd0QUJWV00yN1ZKNmtDLzNRYXJLemxMZ2h4c090Ky8yMStsNmpCOVBwOFZtR1BYUgo1VFY0UkwrTDkyWWNuQktDUlZ3Y2NlaDJreEExRDQ0V0hYZ2o5UXRPZ0h3dGgzTkZkQVF6dUEwMTRiNk1BVzlFCmVick5LTWFhY1ZUR1JBbmg2WldkVFZQSjRacTNaRURIMTNVK0JLU2E0M3FOeVp3QjBIaCtKc3czVzlWbmFsMEMKQ0Z3djM4NEVyam9pTU92ZytGT0tlMThTTy9lWm16cWN0M0IxZzIrSThuaGJMYklETk5iR1FMby9KOGxZS084Uwp1WnE0N3pxS2kvQkdPTmJaeFphSjRLY0xCN1JVVzAyTWsrMmc3NTRTVG8xbC9ycTc0WW1iU2E0S3FLY25UZDJXCmtnMExpNkN3YUplYkQ0UE9TT3N5c3RERmdsTXBMbGpPd2lZPQotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K"
 
  }
 
}'
  • Значение поля data в запросе можно получить, выполнив команду:
openssl base64 -in req.csr | tr -d '\n'

где req.csr – файл запроса на сертификат.

Пример ответа на обращение к методу

{
 
  "status": 200,
 
  "data": {
 
    "name": "Test8717",
 
    "subjectDN": {
 
      "CN": [
 
        "Test8717"
 
      ]
 
    },
 
    "subjectAltName": {
 
      "RFC822NAME": [
 
        "test8717@mail.ru"
 
      ],
 
      "MS_UPN": [
 
        "test8717@mail.ru"
 
      ]
 
    },
 
    "keyBits": 2048,
 
    "keyAlgorithm": "RSA",
 
    "subjectKeyIdentifier": "a642079de5f054ab12f8ce2933dc9378fd57524d"
 
  }
 
}