Перейти к основному содержимому

Установка сертификатов на транспортный сервер

Установка сертификатов выполняется внутри контейнера транспортного сервера.

Перед установкой необходимо разместить файлы на целевой машине:

  • сертификаты (.cer, .crt, .p12) - в <рабочий_каталог>/certs;
  • контейнеры закрытых ключей - в <рабочий_каталог>/crypto/keys.

<рабочий_каталог> - каталог транспортного сервера на целевой машине. Подробнее про рабочие каталоги см. Подготовка рабочих каталогов.

Сертификаты из каталога <рабочий_каталог>/certs доступны внутри контейнера по пути /home/app/certs.

Признак успешного выполнения любой команды КриптоПро - строка [ErrorCode: 0x00000000] в конце вывода. Любое другое значение означает ошибку.

Вход в контейнер

Для установки сертификатов необходимо войти в контейнер транспортного сервера под пользователем app:

docker exec -it -u app <имя_контейнера> /bin/bash

<имя_контейнера> - имя контейнера транспортного сервера. По умолчанию используется fingrad-transport-server.

Установка сертификатов

Для установки сертификата используется команда:

certmgr -install \
-file /home/app/certs/<имя_файла_сертификата> \
-store <хранилище_сертификатов>

Доступные хранилища:

  • uRoot - корневые сертификаты удостоверяющих центров;
  • uCA - промежуточные сертификаты удостоверяющих центров;
  • uMy - личные и транспортные сертификаты, используемые транспортным сервером.

Например:

certmgr -install \
-file /home/app/certs/root.cer \
-store uRoot

При установке сертификата КриптоПро может запросить подтверждение с указанием субъекта и отпечатка сертификата. Убедитесь, что они соответствуют устанавливаемому сертификату, и подтвердите установку.

Сертификат с контейнером закрытого ключа

Если сертификат необходимо связать с контейнером закрытого ключа, сначала проверьте доступные контейнеры. Команда выводит контейнеры закрытых ключей, размещённые в <рабочий_каталог>/crypto/keys:

csptest -keyset -enum_cont -verifycontext -fqcn

Пример вывода:

\\.\HDIMAGE\CI02741778-IFT-92233764567001
\\.\HDIMAGE\pfx-64fa3914-c30c-bf22-2fd3-9bc5e2126c71
\\.\HDIMAGE\W0M3D914734YJI00

Если в выводе несколько контейнеров, выберите тот, который соответствует устанавливаемому сертификату. Имя контейнера указывается при выпуске ключа и передаётся вместе с ним. Если имя неизвестно, сопоставить контейнер с сертификатом можно по полю Subject в выводе:

certmgr -list -cont '<имя_ключевого_контейнера>'

<имя_ключевого_контейнера> - полное имя контейнера из вывода csptest.

Затем установите сертификат с указанием имени контейнера:

certmgr -install \
-file /home/app/certs/<имя_файла_сертификата> \
-store uMy \
-cont '<имя_ключевого_контейнера>'

Например:

certmgr -install \
-file /home/app/certs/my.cer \
-store uMy \
-cont '\\.\HDIMAGE\W0M3D914734YJI00'

Сертификат PKCS#12

Установка сертификата из файла .p12 или .pfx, содержащего сертификат и закрытый ключ, выполняется командой:

certmgr -install \
-file /home/app/certs/<имя_файла_сертификата> \
-store uMy \
-pfx \
-pin <пароль_от_файла>

Проверка установленных сертификатов

Просмотреть установленные сертификаты можно командой:

certmgr -list -store <хранилище_сертификатов>

Для транспортного сертификата в хранилище uMy дополнительно проверьте привязку к закрытому ключу. В выводе certmgr -list -store uMy у сертификата должны присутствовать поля:

  • PrivateKey Link со значением Yes;
  • Container с именем контейнера закрытого ключа.

Например:

PrivateKey Link : Yes
Container : HDIMAGE\\W0M3D914734YJI00

Если в поле PrivateKey Link указано No, сертификат установлен без привязки к закрытому ключу и подписывать им не получится - повторите установку с опцией -cont, см. Сертификат с контейнером закрытого ключа.

Удаление сертификата

При замене истёкшего сертификата предыдущий удаляется по отпечатку:

certmgr -delete -store <хранилище_сертификатов> -thumbprint <отпечаток_сертификата>

Отпечаток указан в поле SHA1 Thumbprint вывода certmgr -list, см. Проверка установленных сертификатов.