9. Приложение В «Настройка и Установка Сервиса подписания и верификации сообщений Notarius» (опционально)

9.1. Описание конфигурационных файлов Сервиса подписания и верификации сообщений

Notarius - Сервис подписания и верификации сообщений предназначен для проверки подписи и подписания сообщений.

9.1.1. Состав и содержание дистрибутивного пакета

Состав дистрибутива Сервиса подписания и верификации сообщений.

  • /distr/notarius – Сервис подписания и верификации сообщений:

    • /distr/notarius/conf/customLogLevels.xml – файл описания настроек логирования;

    • /distr/notarius/conf/application.yml – заготовка конфигурационного файла.

Необходимо скопировать данные файлы в каталог /distr/notarius.

В скопированном конфигурационном файле application.yml задать необходимые параметры (в заготовке обозначены звездочками *). Более подробное описание необходимых настроек файла application.yml указаны в разделах ниже.

9.1.2. Реестр изменений конфигурационного файла

Таблица 9.1 содержит реестр изменений.

Таблица 9.1 Реестр изменений конфигурационного файла

Версия

Перечень изменений (относительно предыдущей версии)

3.16.0

Начальная версия

3.17.0

Изменений нет

3.18.0

Изменений нет

3.19.0

Изменений нет

3.20.1

Изменений нет

9.2. Настройка и запуск Сервиса подписания и верификации сообщений

Установка Notarius опциональна, требуется только если по требованиям ИБ Агенту СМЭВ4 не разрешается использовать встроенные средства криптографии.

9.2.1. Порядок загрузки данных и программ

Администратор УВ осуществляет развёртывание, запуск и настройку Notarius с помощью данного руководства.

9.2.1.1. Состав и содержание дистрибутивного пакета

Состав дистрибутива Сервиса подписания и верификации сообщений (/distr/notarius):

  • /distr/notarius/app/app.jar – исполняемый файл;

Путь /distr/notarius указан в качестве примера. Есть возможность использовать любой другой путь, скорректировав соответствующим образом приведенные ниже команды.

9.2.2. Предварительные операции (установка «пре-реквизитов»)

В случае, если Notarius устанавливается на машине, отличной от той где установлен Агент, перед запуском Notarius необходимо выполнить действия, описанные в Раздел 3.2.2:

Внимание

Не требуется устанавливать отдельный экземпляр CryptoPro CSP для сервиса подписания и верификации сообщений, в следующих случаях:

  • Если Сервис подписания и верификации сообщений установлен на том же сервере, что и Агент СМЭВ4 в варианте «без использования Docker», в такой ситуации на данном сервере уже имеется установленная CryptoPro CSP;

  1. Выложить в каталог /distr/notarius конфигурационный файл application.yml, подготовленный согласно notaruis_config.

9.2.3. Запуск Сервиса подписания и верификации сообщений

Убедитесь, что пользователь {{user}} имеет доступ к директориям, в которой установлен notarius: /distr/notarius.

Пример раздела конфигурации скрипта для запуска Notarius с использованием сервиса systemd Данный файл, с названием notarius.service, необходимо сохранить в каталог /etc/systemd/system/, скорректировав, при необходимости, пути к файлам.

[Unit]
Description="Service for notarius"
After=syslog.target

[Service]
Type=simple

WorkingDirectory=/distr/notarius
User={{user}} #указать пользователя
Group={{user_group}} #указать группу

Environment="JAVA_HOME=/usr/lib/jdk/axiomjdk-java17.x86_64"
Environment="JDK_JAVA_OPTIONS=--add-exports=java.base/sun.security.util=ALL-UNNAMED \
    --add-exports=java.base/sun.security.x509=ALL-UNNAMED \
    --add-exports=java.base/sun.security.pkcs=ALL-UNNAMED \
    --add-exports=java.base/sun.security.provider=ALL-UNNAMED \
    --add-exports=java.base/sun.security.tools.keytool=ALL-UNNAMED \
    --add-exports=java.base/sun.net=ALL-UNNAMED \
    --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED \
    --add-opens=java.base/java.lang=ALL-UNNAMED \
    --add-opens=java.base/java.nio=ALL-UNNAMED \
    --add-opens=java.xml/org.w3c.dom=ALL-UNNAMED \
    -Dsaffron.default.charset=UTF-16LE \
    -Dsaffron.default.collation.name='UTF-16LE$en_US' \
    -Dsaffron.default.nationalcharset=UTF-16LE \
    -XX:MaxRAMPercentage=80.0 \
    -XX:+UnlockExperimentalVMOptions \
    -XX:InitiatingHeapOccupancyPercent=16 \
    -XX:+UseStringDeduplication \
    -XX:+G1EagerReclaimHumongousObjects \
    -XX:+G1EagerReclaimHumongousObjectsWithStaleRefs \
    -XX:G1HeapWastePercent=2 \
    -XX:G1MaxNewSizePercent=25 \
    -XX:G1MixedGCLiveThresholdPercent=15 \
    -XX:+UseG1GC"
ExecStart=/usr/lib/jdk/axiomjdk-java17.x86_64/bin/java -jar app/app.jar
[Install]
WantedBy=multi-user.target

Далее от имени пользователя root необходимо выполнить команду по включению, запуску сервиса и проверке его статуса:

systemctl daemon-reload
systemctl enable notarius
systemctl start notarius
systemctl -l status notarius

9.2.4. Формирование конфигурационного файла Сервиса подписания и верификации сообщений

9.2.4.1. Общие настройки конфигурационного файла

В конфигурационном файле application.yml задать идентификатор ключа CryptoPro: alias контейнера CryptoPro.

Необходимо использовать тот же идентификатор ключа, что и на Агенте, с которым работает данный сервис проверки полномочий.

9.2.5. Настройка ключей CryptoPro CSP

Указать идентификатор и пароль контейнера ключа CryptoPro:

keys:
  alias: '*** ИДЕНТИФИКАТОР КЛЮЧА CryptoPro ***'
  password: '*** ПАРОЛЬ КЛЮЧА CryptoPro ***'

В случае, если идентификатор ключа CryptoPro содержит пробелы, его следует заключить в одинарные кавычки.

9.2.6. Настройка модуля подписания печатных форм

Для настройки модуля подписания печатных форм необходимо перечислить используемые сертификаты для данного модуля и данные о них.

При отсутствии используемых печатных форм, данный раздел в конфигурации должен отсутствовать.

Пример раздела конфигурации:

printable-form:
  # Максимальный размер данных для подписания
  max-content-length: 268435456
  # Настройка каким сертификатом подписать результат какого запроса.
  # Пары значений "название регламентированного запроса": "алиас сертификата"
  forms:
    {{ form1_name }}: {{ key1 }}
    {{ form2_name }}: {{ key2 }}
        {...}
  signature:
    printable-form-keys:
      -
        certificateAlias: {{ key1 }}
        privateKeyAlias: {{ key1 }}
        privateKeyPass: {{ key1_password }}

      -
        certificateAlias: {{ key2 }}
        privateKeyAlias: {{ key2 }}
        privateKeyPass: {{ key2_password }}
        {...}

9.2.7. Настройка порта сервиса приема запросов

При необходимости изменения порта, на котором принимает запросы Notarius, измените номер порта в блоке параметров

# Настройка Web-сервера
http:
  port: 8696

9.2.8. Настройка Notarius для передачи метрик в Prometheus

Notarius поддерживает возможность передачи метрик работы во внешнюю систему сбора метрик Prometheus.

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

metrics:
  implementation: PROMETHEUS
  # порт, при обращении к которому notarius отдаёт значения метрик
  endpointPort: 8381

Prometheus следует настроить на опрос адреса, на котором запущен notaruis, по указанному порту.

Изменение номера порта может потребоваться, например, в случае если порт уже занят каким-либо другим ПО.

9.3. Настройка и запуск подписания и верификации сообщений с использованием Docker

Действия, требуемые для запуска Notarius под Docker, аналогичны действиям описанным в Раздел 3.5, за исключением следующих отличий:

  • В качестве базового каталога используется /distr/notarius, либо любой другой, не совпадающий с уже используемым /distr/einfahrt;

  • Файл application.yml должен быть подготовлен согласно Раздел 9.2.4;

  • Загружается подготовленный согласно раздела Раздел 10 образ Notarius;

  • В файле run_agent.sh указываются следующие значения:

# Название docker image указать здесь
IMAGE=notarius:latest
# Список используемых портов приложения, указывается в круглых скобках
PORT_LIST=(8696 8381)
  • В файле log-save.sh указывается

NAME="notarius"
  • В командах docker start|stop указывается notarius вместо einfahrt