Добавление цепочки сертификатов в Linux

Добавление цепочки сертификатов в Linux

Команда СМЭВ

  1.1 Подготовка

           Для установки сертификата будет использовано две основные команды: openssl и keytool. Первая команда понадобится для формирования файла сертификата, закодированного в Base64-формате. Инструмент keytool же будет использоваться от предустановленной вместе с Агентом ПОДД JDK-драйвером, который необходим для управления сертификатами. Этот инструмент можно найти в директории $JAVA_HOME/bin/keytool.

           Особое внимание стоит обратить на директорию приложения Крипто ПРО, полный путь которого понадобится при указании необходимых драйверов для утилиты keytool в параметре -providerpath. Более подробный пример использования будет приведен ниже.

           Если Агент ПОДД установлен внутри Докер контейнера, то перед проверкой или добавлением цепочки сертификатов необходимо будет зайти в запущенный контейнер и в открывшейся директории продолжить работу с сертификатом. Следующая команда может служить примером входа в контейнер Агента:

docker exec –it einfahrt bash

1.2  Установка цепочки сертификатов

           Все последующие команды будут выполняться в корне Агента ПОДД. Там же находится установленное приложение Крипто ПРО, наименование директории которой будет считаться cryptopro/. Этот путь используется для явного указания зависимостей провайдера.

1.             Убедиться в наличии контейнера в директории /var/opt/cprocsp/keys/{user} с именем пользователя, под которым выполняется проверка сертификата.

2.             Если не известно имя или псевдоним/alias контейнера, то его можно узнать следующей командой:

less /var/opt/cprocsp/keys/{user}/{container}/name.key

3.             Для проверки наличия цепочки сертификатов у контейнера, можно выполнить из корня Агента ПОДД команду, приведенную ниже. Обратите внимание на путь расположения в параметре –providerpath, его следует заменить на директорию расположения Крипто ПРО, в нашем случае cryptopro/.

$JAVA_HOME/bin/keytool \
-v -list \
-keystore NONE -storepass 1 -storetype HDImageStore \
-provider ru.CryptoPro.JCP.JCP \
-providerpath cryptopro/JCSP.jar:cryptopro/JCP.jar:cryptopro/JCPRevCheck.jar:cryptopro/asn1rt.jar:cryptopro/ASN1P.jar \
-alias {alias}

           В самом начале выведенных данных необходимо найти строчку, начинающуюся с Certificate chain length. Этот параметр может принимать все три значения от единицы до трех. Если в результате стоит число один, то цепочка отсутствует и можно переходить к следующему пункту. Если значение равно двум или даже трем, то это признак наличия в контейнере сертификата Удостоверяющего Центра (УЦ), если стоит цифра два или Головного УЦ (ГУЦ), если стоит цифра три.

4.             Следующий этап заключается в скачивании необходимых сертификатов, используя информацию из предыдущего пункта. Для начала нужно найти строчки accessLocation: URIName и выбрать первую ссылку с расширением .crt, с помощью которой можно скачать сертификат УЦ.

Создадим временную директорию для хранения сертификатов:

mkdir certs/

           И скачаем сертификат УЦ по ссылке:

wget {url.crt} -O certs/center.crt

           Чтобы получить сам сертификат из контейнера, можно воспользоваться командой, не забыв указать псевдоним контейнера в параметре -alias:

$JAVA_HOME/bin/keytool \
-exportcert \
-keystore NONE -storepass 1 -storetype HDImageStore \
-provider ru.CryptoPro.JCP.JCP \
-providerpath cryptopro/JCSP.jar:cryptopro/JCP.jar:cryptopro/JCPRevCheck.jar:cryptopro/asn1rt.jar:cryptopro/ASN1P.jar \
-file certs/local.cer \
-alias {alias}

5.             Теперь необходимо сформировать файл, который будет содержать информацию о двух сертификатах. Для этого поочередно выполнить следующие команды:

openssl x509 -inform der -in certs/local.cer -out certs/local.pem
openssl x509 -inform der -in certs/center.crt -out certs/center.pem
cat certs/local.pem certs/center.pem > certs/chain.pem

6.             Для добавление сгенерированной цепочки выполнить следующую команду:

$JAVA_HOME/bin/keytool \
-importcert -keystore NONE -storepass 1 -storetype HDImageStore \
-provider ru.CryptoPro.JCP.JCP \
-providerpath cryptopro/JCSP.jar:cryptopro/JCP.jar:cryptopro/JCPRevCheck.jar:cryptopro/asn1rt.jar:cryptopro/ASN1P.jar \
-file certs/chain.pem \
-alias {alias}  

7.             Выполнить команду из пункта 2 и убедиться, что значение Certificate chain length равняется двойке и контейнер содержит два сертификата.

Report Page