Войти

Особенности регистрации сертификата в СМЭВ 4

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

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

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

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

docker exec –it einfahrt bash

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

Все последующие команды будут выполняться в корне Агента ПОДД. Там же находится установленное приложение Крипто ПРО, наименование директории которой будет считаться 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 (Рисунок 1). Этот параметр может принимать все три значения от единицы до трех. Если в результате стоит число один, то цепочка отсутствует и можно переходить к следующему пункту. Если значение равно двум или даже трем, то это признак наличия в контейнере сертификата Удостоверяющего Центра (УЦ), если стоит цифра два или Головного УЦ (ГУЦ), если стоит цифра три.


 Рисунок 1 – Проверка наличия цепочки у сертификата.

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

 
Рисунок 2 – Ссылка на сертификат УЦ.

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

mkdir temp/

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

wget {url.crt} -O temp/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 temp/local.cer \
  -alias {alias}

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

openssl x509 -inform der -in temp/local.cer -out temp/local.pem
openssl x509 -inform der -in temp/center.crt -out temp/center.pem
cat temp/local.pem temp/center.pem > temp/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 temp/chain.pem \
  -alias {alias}

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

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

1. На первом шаге добавления цепочки сертификатов необходимо экспортировать сам сертификат из существующего хранилища (если открытый ключ сертификата уже экспортирован, то пропустить этот этап).

Для этого нужно открыть конфигурацию Крипто ПРО JCP и перейти во вкладку Хранилища ключей и сертификатов. Раскрыть локальное хранилище HDImageStore, выбрать необходимый контейнер с сертификатом и ввести пароль при необходимости, чтобы открыть контейнер (Рисунок 3). В правой панели в разделе Ключ и сертификат нажать Просмотр сертификата и, в открывшемся окне, перейти во вкладку Подробно. Для экспорта сертификата нажать соответствующую кнопку Экспорт и сохранить сертификат в нужном формате, например, certificate.cer.

 Рисунок 3 – Экспорт открытого ключе из контейнера.

2. Открыть экспортированный сертификат и перейти во вкладку Состав. Перейти в поле Доступ к информации о центрах сертификации и найти ссылку на сертификат Поставщика центра сертификации (Рисунок 4). Выделить ссылку на сертификат и загрузить его любым удобным способом, например, через вставку ссылки в адресное поле браузера, после переименовать скаченный файл в certificate.crt.

 Рисунок 4 – Ссылка на сертификат УЦ.

3. Оба выгруженных сертификата необходимо добавить в личное хранилище сертификатов. Поочередно следует открыть каждый из сертификатов и нажать кнопку Установить сертификат (Рисунок 5).

Рисунок 5 – Установка сертификата в личное хранилище.

В мастере импорта сертификата в качестве расположения хранилища выбрать Текущего пользователя и следующим шагом выбрать личное хранилище в качестве размещения всех сертификатов (Рисунок 6). Нажать готово на следующем этапе и подтвердить успешность добавления сертификата сообщением о завершенном импорте.


 Рисунок 6 – Выбор личного хранилища.

Импортировать таким образом два сертификата certificate.cer и certificate.crt.

Чтобы экспортировать оба сертификата в нужном формате потребуется открыть Диспетчер сертификатов (Ctrl+R → certmgr.msc → OK). Перейти в раздел Личное → Сертификаты и выделить сертификаты открытого ключа и сертификат УЦ. Через контекстное меню (правая кнопка мыши) выбрать Все задачи → Экспорт (Рисунок 7).


Рисунок 7 – Экспорт сертификатов.

В качестве предложенного формата экспорта файла выбрать формат PKCS #7 (Рисунок 8). На следующем этапе выбрать путь сохранения файла, задав имя, например, certificate.p7b и закончить экспорт файла.

Рисунок 8 – Выбор формата экспорта сертификатов.

4. Последним этапом является добавление выгруженного файла с сертификатами в контейнер. Для этого через окно конфигурации Крипто ПРО JPC для нужного сертификата нажать в разделе Ключ и сертификат кнопку Добавить (Рисунок 9). В открывшемся диалоговом окне выбрать экспортированный файл certificate.p7b и согласиться с заменой сертификата в контейнере новой цепочкой.


 Рисунок 9 – Добавление файла сертификатов в контейнер.

После проделанной операции в случае успеха напротив сертификата появится надпись Цепочка (Рисунок 10), что является подтверждением наличия необходимой связи в контейнере.


 Рисунок 10 – Наличие цепочки в контейнере.


Авторизуйтесь, чтобы оставить комментарий к статье