Подготовка сертификатов для настройки TLS(SSL)-шифрования

Для включения TLS(SSL)-шифрования в продукте необходимо предварительно сформировать хранилище доверенных корневых сертификатов УЦ (truststore) и хранилище ключей (keystore), в которых будут содержаться подписанные корневым сертификатом УЦ ключи в формате пар «сертификат — приватный ключ».

Хранилище доверенных сертификатов (truststore)

При установке бэкенда продукта автоматически формируется хранилище доверенных корневых сертификатов УЦ (truststore) по пути: /etc/ssl/certs/java/cacerts.

По умолчанию путь к хранилищу задается в соответствующих конфигурационных параметрах бэкенда в файле application.properties.

Для добавления нового доверенного корневого сертификата в truststore используйте утилиту keytool, поставляемую вместе с JRE.

Управление truststore с помощью keytool

Для управления хранилищем доверенных сертификатов (truststore) используется утилита keytool, входящая в состав JRE. Ниже приведены стандартные операции, необходимые для настройки доверия к сертификатам внешних сервисов:

  • импорт сертификата в пользовательское хранилище truststore;

    Для добавления внешнего сертификата (например, сервера удаленного доступа) в отдельное хранилище выполните команду:

    $JAVA_HOME/bin/keytool -keystore truststore.jks -alias guakamole -import -file ./docker-compose/lcm/config/ira-server.domain.local.crt

    После выполнения команды система запросит подтверждение импорта. Введите yes, чтобы добавить сертификат в хранилище.

    Хранилище truststore.jks создается автоматически, если оно не существует. Укажите пароль при первом создании — он потребуется при последующем использовании.
  • импорт сертификата в системное хранилище truststore;

    Для того чтобы сертификат стал доверенным для всех Java-приложений в системе, выполните следующие действия (приводятся примеры для ОС Ubuntu):

    1. Установите пакет ca-certificates-java, обеспечивающий интеграцию системных сертификатов с Java:

      apt install ca-certificates-java
    2. Скопируйте пользовательский файл сертификата с расширением .crt в системный каталог /usr/local/share/ca-certificates/:

      cp /opt/inno-lcm-core/inno.crt /usr/local/share/ca-certificates/inno.crt
    3. Выполните команду update-ca-certificates, чтобы обновить системное хранилище truststore и добавить сертификат в /etc/ssl/certs/java/cacerts:

      update-ca-certificates
  • просмотр содержимого системного truststore;

    Для проверки наличия сертификата в системном хранилище /etc/ssl/certs/java/cacerts выполните команду:

    $JAVA_HOME/bin/keytool -list -keystore /etc/ssl/certs/java/cacerts | grep ira

    Команда выводит список сертификатов, содержащих в имени подстроку ira. Если сертификат добавлен, он отобразится в выводе.

Хранилище ключей (keystore)

Для создания хранилища ключей (keystore):

  1. Обратитесь в УЦ, который предоставил доверенный корневой сертификат, с запросом на формирование подписанной пары «сертификат — приватный ключ».

  2. Необязательный шаг — если пара «сертификат — приватный ключ» предоставлена в виде отдельных файлов, запакуйте ее в Java-совместимое хранилище, используя утилиту keytool.

Настройка путей и паролей в конфигурации

После создания хранилищ сертификатов и ключей укажите пути к ним и пароли в соответствующих конфигурационных параметрах бэкенда в файле application.properties.