---
canonical: https://docs.ideco.ru/v22/ru/ngfw/api/certificates-api
---

# Сертификаты

::: page-constructor
blocks:
  - type: content-layout-block
    textContent:
      buttons:
        - text: Классический VCE
          theme: action
          width: 'auto'
        - text: Высокопроизводительный VCE
          theme: outlined
          url: https://docs.ideco.ru/api/vpp-v22/ru/ngfw/scontrol-api/certificates/
          width: 'auto'              
        - text: Документация
          theme: outlined
          url: https://docs.ideco.ru/v22/ru/ngfw/settings/services/certificates/
          width: 'auto'
    resetPaddings: false
    textWidth: l
    size: m
    centered: false
:::

## Управление действующими сертификатами

{#top}

{% cut "Получение списка действующих сертификатов" %}

```
GET /certs/runtime
```

**Ответ на успешный запрос:**

```json5
[
  {
    "id": "string",
    "type": "automatic" | "lets-encrypt" | "custom",
    "cert_pem": "string",
    "status": [
      {
        "severity": "error" | "warning" | "info",
        "message": "string",
      }
    ],
    "root": true | false,
    "request": "string"
  },
  ...
]
```

* `id` - домен или IP-адрес сервера, для которого выпущен сертификат;
* `type` - тип сертификата:
  * `automatic` - автоматически сгенерированный;
  * `lets-encrypt` - выпущенный через Let’s Encrypt;
  * `custom` - пользовательский (загруженный вручную).
* `cert_pem` - содержимое сертификат в формате PEM;
* `status` - состояние сертификата. Может быть пустым или содержать данные:
  * `severity` - уровень критичности (`error`, `warning`, `info`);
  * `message` - поясняющее сообщение.
* `root` - признак корневого сертификата: если `true` - корневой сертификат; если `false` - пользовательский;
* `request` - содержит значение поля **CN** (Common Name, общее имя).

{% endcut %}

{#top}

{% cut "Перевыпуск пользовательского сертификата" %}

```
DELETE /certs/runtime/<id сертификата>
```

**Ответ на успешный запрос:** статус 200.

{% endcut %}

## Управление загруженными сертификатами

{#top}

{% cut "Получение списка загруженных сертификатов" %}

```
GET /certs/stored
```

**Ответ на успешный запрос:**

```json5
[
  {
    "id": "string",
    "cert_pem": "string",
    "type": "automatic" | "custom",
    "root": true | false
  },
  ...
]
```

* `id` - идентификатор сертификата;
* `cert_pem` - содержимое сертификат в формате PEM;
* `type` - тип сертификата:
  * `automatic` - автоматически сгенерированный;
  * `custom` - пользовательский (загруженный вручную).
* `root` - признак корневого сертификата: если `true` - корневой сертификат; если `false` - пользовательский.

{% endcut %}

{#top}

{% cut "Загрузка пользовательского сертификата с ключом" %}

```
POST /certs/stored
```

**Тело запроса:** сертификат и ключ в формате PEM.

**Ответ на успешный запрос:**

```json5
{
  "id": "string"
}
```

{% endcut %}

{#top}

{% cut "Замена сертификата и ключа" %}

```
PUT /certs/stored/<id сертификата>
```

**Тело запроса:** сертификат и ключ в формате PEM.

**Ответ на успешный запрос:** статус 200.

Аналогично можно заменить корневой сертификат.

{% endcut %}

{#top}

{% cut "Удаление пользовательского сертификата и ключа \ Перевыпуск корневого сертификата" %}

```
DELETE /certs/stored/<id сертификата>
```

**Ответ на успешный запрос:** статус 200.

{% endcut %}

{#top}

{% cut "Получение корневого сертификата" %}

```
GET /certs/root_ca/download
```

**Ответ на успешный запрос:** статус 200 и сертификат без приватного ключа в формате PEM.

{% endcut %}

## Управление системными сертификатами

{#top}

{% cut "Получение списка системных сертификатов" %}

```
GET /certs/stored_ext
```

**Ответ на успешный запрос:**

```json5
[
  {
    "id": "string",
    "cert_pem": "string",
    "status": "active" | "expired"
  },
  ...
]
```

* `id` - идентификатор сертификата;
* `cert_pem` - содержимое сертификат в формате PEM;
* `status` - состояние сертификата:
  * `active` - действителен;
  * `expired` - срок действия истек.

{% endcut %}

{#top}

{% cut "Загрузка системного сертификата" %}

```
POST /certs/stored_ext
```

**Тело запроса:** сертификат в формате PEM.

**Ответ на успешный запрос:**

```json5
{
  "id": "string"
}
```

* `id` - идентификатор сертификата.

{% endcut %}

{#top}

{% cut "Удаление системного сертификата" %}

```
DELETE /certs/stored_ext/<id сертификата>
```

**Ответ на успешный запрос:** статус 200.

{% endcut %}

{#top}

{% cut "Получение системного (корневого) сертификата" %}

```
GET /certs/stored_ext/<id сертификата>/download
```

**Ответ на успешный запрос:** статус 200 и сертификат в формате PEM.

{% endcut %}

## Управление сертификатами Ideco Client

{% cut "Получение списка действующих сертификатов" %}{#list-certificates}

#|
|| GET | `/agent_backend/agent/certs` ||
|#

#### Ответ на успешный запрос

```json5
[
    {
        "id": "string",
        "name": "string",
        "subject_dn": "string",
        "serial": "string",
        "issuer_dn": "string",
        "cert_pem": "string",
        "cert_role": "string",
        "builtin_ca_tag": "string",
        "not_before": "float",
        "not_after": "float",
        "comment": "string"
    },
    ...
]
```

#|
|| **Параметр** | **Тип** | **Описание** ||
|| `id` | string | Идентификатор сертификата. Только для чтения ||
|| `name` | string | Название сертификата, максимальная длина - 256 символов. Не может быть пустым ||
|| `subject_dn` | string | Subject DN сертификата в формате RFC4514. Только для чтения ||
|| `serial` | string | Серийный номер из Subject DN при наличии, иначе серийный номер сертификата. Только для чтения ||
|| `issuer_dn` | string | Issuer DN сертификата в формате RFC4514. Только для чтения ||
|| `cert_pem` | string | Сертификат в формате PEM. Только для чтения ||
|| `cert_role` | string | Роль сертификата. Только для чтения. Возможные значения: `ca`, `leaf` ||
|| `builtin_ca_tag` | string | Тег CA-сертификата локального УЦ. Только для чтения. Возможные значения: `null`, `issuing_ca` ||
|| `not_before` | float | Дата начала действия сертификата в формате timestamp. Только для чтения ||
|| `not_after` | float | Дата окончания действия сертификата в формате timestamp. Только для чтения ||
|| `comment` | string | Комментарий, максимальная длина - 256 символов. Может быть пустым ||
|#


{% endcut %}

{% cut "Добавление сертификата" %}{#add-certificates}

#|
|| POST | `/agent_backend/agent/certs` ||
|#

#### Json-тело запроса

```json5
{
    "name": "string",
    "cert_pem": "string",
    "comment": "string"
}
```

#|
|| **Параметр** | **Тип** | **Описание** ||
|| `name` | string | Название сертификата, максимальная длина - 256 символов. Не может быть пустым ||
|| `cert_pem` | string | Сертификат в формате PEM ||
|| `comment` | string | Комментарий, максимальная длина - 256 символов. Может быть пустым ||
|#

#### Ответ на успешный запрос

Код ответа: **200 OK**

```json5
{
    "id": "string"
}
```

#|
|| **Параметр** | **Тип** | **Описание** ||
|| `id` | string | Идентификатор добавленного сертификата ||
|#


{% endcut %}

{% cut "Обновление сертификата" %}{#edit-certificates}

#|
|| PATCH | `/agent_backend/agent/certs/<id сертификата>` ||
|#

* `id` - идентификатор сертификата.

#### Json-тело запроса

{% include [изменение серта](cert.md) %}

#### Ответ на успешный запрос

Код ответа: **200 OK**


{% endcut %}

{% cut "Скачивание сертификата в формате PEM" %}{#download-certificates}

#|
|| GET | `/agent_backend/agent/certs/<id сертификата>/download` ||
|#

* `id` - идентификатор сертификата.

#### Ответ на успешный запрос

Файл с расширением `.pem` и именем из поля `name`.


{% endcut %}

{% cut "Удаление сертификата" %}{#delete-certificates}

#|
|| DELETE | `/agent_backend/agent/certs/<id сертификата>` ||
|#

* `id` - идентификатор сертификата.

#### Ответ на успешный запрос

Код ответа: **200 OK**


{% endcut %}

{% cut "Получение списка отозванных сертификатов" %}{#get-revoked-certificates}

#|
|| GET | `/agent_backend/agent/certs/revoked` ||
|#

#### Ответ на успешный запрос

```json5
[
    {
        "id": "string",
        "name": "string",
        "subject_dn": "string",
        "serial": "string",
        "issuer_dn": "string",
        "cert_pem": "string",
        "not_before": "float",
        "not_after": "float",
        "comment": "string"
    },
    ...
]
```

#|
|| **Параметр** | **Тип** | **Описание** ||
|| `id` | string | Идентификатор сертификата. Только для чтения ||
|| `name` | string | Название сертификата, максимальная длина - 256 символов. Не может быть пустым ||
|| `subject_dn` | string | Subject DN сертификата в формате RFC4514. Только для чтения ||
|| `serial` | string | Серийный номер из Subject DN при наличии, иначе серийный номер сертификата. Только для чтения ||
|| `issuer_dn` | string | Issuer DN сертификата в формате RFC4514. Только для чтения ||
|| `cert_pem` | string | Сертификат в формате PEM. Только для чтения ||
|| `not_before` | float | Дата начала действия сертификата в формате timestamp. Только для чтения ||
|| `not_after` | float | Дата окончания действия сертификата в формате timestamp. Только для чтения ||
|| `comment` | string | Комментарий, максимальная длина - 256 символов. Может быть пустым ||
|#


{% endcut %}

{% cut "Редактирование отозванного сертификата" %}{#edit-revoked-certificates}

#|
|| PATCH | `/agent_backend/agent/certs/revoked/<id сертификата>` ||
|#

* `id` - идентификатор отозванного сертификата.

#### Json-тело запроса

{% include [серт](cert.md) %}

#### Ответ на успешный запрос

Код ответа: **200 OK**


{% endcut %}
