Установка сертификатов на транспортный сервер
Установка сертификатов выполняется внутри контейнера транспортного сервера.
Перед установкой необходимо разместить файлы на целевой машине:
- сертификаты (
.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, см. Проверка установленных сертификатов.