Перейти к содержанию

Команда certificates — описание и примеры#

Команда certificates в API КриптоАРМ предназначена для работы с сертификатами в локальных хранилищах.

Содержание:


Общая информация#

Команда certificates используется для экспорта сертификата или списка сертификатов, импорта сертификата в локальное хранилище, просмотра информации о сертификате.

Схема взаимодействия (экспорт сертификатов):

Схема работы команды certificates

Все запросы между КриптоАРМ и сервером ДОЛЖНЫ соответствовать спецификации протокола JSON-RPC 2.0.

В качестве транспорта используется HTTP.

🔍 Общее описание указано в разделе Формат ссылки.


Формат ссылки#

Для выполнения команды certificates должна быть сформирована ссылка вида:

cryptoarm://certificates/<URL>/?id=<id>[&authType=<authType>]
  • cryptoarm:// - зарегистрированный протокол
  • certificates - выполняемая команда
  • <URL> - ссылка, на которую КриптоАРМ будет слать запросы
  • id - уникальный идентификатор транзакции
  • authType - необязательный параметр. Тип аутентификации.

Пример:

cryptoarm://certificates/https://example.com/json?id=2c48eb32-a0a8-405c-ade9-eed130605cba

Получение параметров операции#

После получения команды certificates КриптоАРМ отправляет запрос на получение параметров операции.

Формат запроса#

Ключ Значение Описание
jsonrpc «2.0» Версия JSON-RPC протокола. Всегда «2.0».
method certificates.parameters Используемый метод. Всегда certificates.parameters.
id Уникальный идентификатор Используется идентификатор, который указан в ссылке на операцию.
diagnostic IDiagnosticsInformation Диагностическая информация о рабочем месте. Содержит поля VERSIONS, PROVIDERS, LICENSES.

Пример:

Content-Type: application/json
Content-Length: ...
Accept: application/json
{
    "jsonrpc": "2.0",
    "method": "certificates.parameters",
    "id": "2c48eb32-a0a8-405c-ade9-eed130605cba",
    "diagnostic": {
      "VERSIONS": {
        "csp": "5.0.11753",
        "cryptoarm": "2.5.2",
        "openssl": "1.1.1w"
      },
      "PROVIDERS": {
        "GOST2012_256": true,
        "GOST2012_512": true,
        "openssl": true
      },
      "LICENSES": {
        "csp": {
          "status": true,
          "type": "",
          "expiration": ""
        },
        "cryptoarm": {
          "status": true,
          "type": "Permanent",
          "expiration": ""
        }
      }
    }
}

Формат ответа#

Ключ Значение Описание
jsonrpc «2.0» Версия JSON-RPC протокола. Всегда «2.0».
result ICertificatesParameters Объект со сведениями о параметрах операции
id Уникальный идентификатор Используется идентификатор, который указан в ссылке на операцию.

Пример ответа для импорта сертификата:

HTTP/1.1 200 OK
Connection: close
Content-Length: ...
Content-Type: application/json
Date: Sat, 08 Jul 2020 12:04:08 GMT
{
    "jsonrpc": "2.0",
    "result": {
        "operation": "import",
        "props": {
            "store": ["MY"],
            "certificateBase64": "MIIFFDCCBMGgAwIBAgIQT...4VVkDWbX/n4="
        }
    },
    "id": "2c48eb32-a0a8-405c-ade9-eed130605cba"
}

Пример ответа для экспорта сертификата:

HTTP/1.1 200 OK
Connection: close
Content-Length: ...
Content-Type: application/json
Date: Sat, 08 Jul 2020 12:04:08 GMT
{
    "jsonrpc": "2.0",
    "result": {
        "operation": "export",
        "props": {
            "store": ["MY"],
            "multy": false
        }
    },
    "id": "2c48eb32-a0a8-405c-ade9-eed130605cba"
}

Пример ответа для просмотра информации:

HTTP/1.1 200 OK
Connection: close
Content-Length: ...
Content-Type: application/json
Date: Sat, 08 Jul 2020 12:04:08 GMT
{
    "jsonrpc": "2.0",
    "result": {
        "operation": "information",
        "props": {
            "certificateBase64": "MIIFFDCCBMGgAwIBAgIQT...4VVkDWbX/n4="
        }
    },
    "id": "2c48eb32-a0a8-405c-ade9-eed130605cba"
}

Импорт сертификата#

При импорте (operation: "import") КриптоАРМ импортирует переданный сертификат в локальное хранилище. Если хранилище не указано, используется MY. После успешного импорта при наличии закрытого ключа пользователю может быть предложено выбрать хранилище.

Результат отправляется POST-запросом.

Формат запроса результата#

Ключ Значение Описание
jsonrpc «2.0» Версия JSON-RPC протокола. Всегда «2.0».
method certificates.import Используемый метод.
params { id, status } Параметры с результатом импорта
Content-Type: application/json
Content-Length: ...
Accept: application/json
{
    "jsonrpc": "2.0",
    "method": "certificates.import",
    "params": {
        "id": "2c48eb32-a0a8-405c-ade9-eed130605cba",
        "status": "Completed"
    }
}

Экспорт сертификатов#

При экспорте (operation: "export") КриптоАРМ открывает окно выбора сертификата. Если multy: true, пользователю разрешён множественный выбор. Результат всегда передаётся в виде массива certificates (даже для одиночного выбора).

Формат запроса#

Ключ Значение Описание
jsonrpc «2.0» Версия JSON-RPC протокола. Всегда «2.0».
method certificates.base64 Используемый метод.
params { id, certificates: ICertificateExportParams[] } Массив сертификатов (один элемент — для одиночного экспорта)
Content-Type: application/json
Content-Length: ...
Accept: application/json
{
    "jsonrpc": "2.0",
    "method": "certificates.base64",
    "params": {
        "id": "2c48eb32-a0a8-405c-ade9-eed130605cba",
        "certificates": [{
                "certificateBase64": "MIIFFDCCBMGgAwIBAgIQTm1HiybyfWV...4VVkDWbX/n4=",
                "hash": "abc123...",
                "issuerFriendlyName": "Минкомсвязь России",
                "issuerName": "CN=Минкомсвязь России",
                "subjectFriendlyName": "Минкомсвязь России",
                "subjectName": "CN=Минкомсвязь России",
                "status": true,
                "serial": "12345",
                "notAfter": "2025-01-01T00:00:00Z",
                "notBefore": "2020-01-01T00:00:00Z",
                "rootCAMinComSvyaz": true,
                "x509": "MIIFFDCCBMGgAwIBAgIQTm1..."
            },
            {
                "certificateBase64": "MIIFFDCCBMGgAwIBAgIQTm1HiybyfWV...4VVkDWbX/n4=",
                "hash": "def456...",
                "issuerFriendlyName": "Головной удостоверяющий центр",
                "issuerName": "CN=ГУЦ",
                "subjectFriendlyName": "Головной удостоверяющий центр",
                "subjectName": "CN=ГУЦ",
                "status": true,
                "serial": "67890",
                "notAfter": "2030-01-01T00:00:00Z",
                "notBefore": "2019-01-01T00:00:00Z",
                "rootCAMinComSvyaz": false,
                "x509": "MIIFFDCCBMGgAwIBAgIQTm2..."
            }
        ]
    }
}

Просмотр информации о сертификате#

При просмотре (operation: "information") КриптоАРМ отображает переданный сертификат в окне информации и оповещает сервер о завершении.

Формат запроса результата#

Ключ Значение Описание
jsonrpc «2.0» Версия JSON-RPC протокола. Всегда «2.0».
method certificates.information Используемый метод.
params { id, status } Параметры с результатом
Content-Type: application/json
Content-Length: ...
Accept: application/json
{
    "jsonrpc": "2.0",
    "method": "certificates.information",
    "params": {
        "id": "2c48eb32-a0a8-405c-ade9-eed130605cba",
        "status": "Completed"
    }
}

Справочник интерфейсов#

Интерфейс ICertificatesParameters#

Объекты данного типа описывают параметры команды запроса на сертификат.

Свойство Тип Описание
operation string Тип операции: "import", "export", "information".
props ICertificatesOperationProps Параметры операции

Интерфейс ICertificatesOperationProps#

Объекты данного типа описывают дополнительные свойства операции.

Свойство Тип Описание
headerText? string Необязательный параметр. Используется для отображения в заголовке окна. Максимальная длина - 40 символов.
descriptionText? string Необязательный параметр. Используется для отображения в сведениях об операции. Максимальная длина - 120 символов.
store? string[] Необязательный параметр. Массив имён хранилищ. Если не задан, используется MY (личные сертификаты).
multy? boolean Необязательный параметр. Разрешён ли множественный выбор. По умолчанию false.
certificateBase64? string Необязательный параметр. Сертификат в формате X.509, закодированный в Base64. Используется для import и information.

Интерфейс ICertificateBase64Params#

Объекты данного типа описывают параметры запроса для метода certificates.base64 при одиночном экспорте.

Свойство Тип Описание
id string Идентификатор транзакции
certificateBase64 string Сертификат в формате X.509, закодированный в Base64
friendlyName string Дружественное имя сертификата

Интерфейс ICertificateExportParams#

Объекты данного типа описывают сертификат в составе списка при множественном экспорте. Используется в методе certificates.base64 с массивом certificates.

Свойство Тип Описание
certificateBase64 string Сертификат в формате X.509, закодированный в Base64
hash string SHA1-отпечаток сертификата
issuerFriendlyName string Дружественное имя издателя (CN)
issuerName string Имя издателя
notAfter string Дата окончания действия сертификата
notBefore string Дата начала действия сертификата
rootCAMinComSvyaz boolean Является ли владельцем корневого сертификата цепочки "Минкомсвязь России"
subjectFriendlyName string Дружественное имя субъекта (CN)
subjectName string Имя субъекта
status boolean Статус сертификата (проверяется вся цепочка)
serial string Серийный номер сертификата
x509? string Необязательный параметр. Сертификат в формате X.509, закодированный в Base64

Интерфейс ICertificateIdentityInfo#

Объекты данного типа описывают объекты, содержащие параметры сертификата, позволяющие идентифицировать его.

Свойство Тип Описание
hash string SHA1-отпечаток сертификата
notAfter number Дата окончания действия сертификата (timestamp)
notBefore number Дата начала действия сертификата (timestamp)
isSelfSigned boolean Флаг самоподписанного сертификата
key boolean Наличие привязки к закрытому ключу
pubKeyAlg string Алгоритм публичного ключа
issuerFriendlyName string Дружественное имя издателя (CN)
issuerName string Имя издателя
subjectFriendlyName string Дружественное имя субъекта (CN)
subjectName string Имя субъекта
signatureAlgorithm string Алгоритм подписи
signatureDigestAlgorithm string Алгоритм хеширования
serial string Серийный номер сертификата
organizationName string Название организации
provider string Тип криптопровайдера
keyUsageString string Использование ключа
keyNotAfter number Срок действия закрытого ключа (timestamp)

Интерфейс приложения#

При выполнении команды запроса на сертификаты, не относящийся к процедуре интерфейс блокируется.

Пользователю доступны:

  • Выбор сертификатов,
  • Две кнопки: «Готово» и «Отмена».

После выполнения команды, приложение будет свернуто в системный трей.

Для повышения удобства работы и хранения данных веб-сайт TRUSTED.RU использует файлы COOKIE. Продолжая работу с веб-сайтом, Вы даете свое согласие на работу с этими файлами.