4. Настройка и запуск Агента СМЭВ4
4.1. Порядок загрузки данных и программ
Администратор УВ осуществляет развёртывание, запуск и настройку Агента СМЭВ4 с помощью данного руководства.
4.2. Подготовка и настройка системы для запуска Агента СМЭВ4 без использования docker
4.2.1. Состав и содержание дистрибутивного пакета
Состав дистрибутива Агента СМЭВ4 (/distr/einfahrt):
/distr/einfahrt/app/app.jar– исполняемый файл;/distr/einfahrt/csp-5.0.11455.tar.gz– дистрибутив CryptoPro CSP;/distr/einfahrt/bellsoft-jdk17.0.7-linux-amd64.tar.gz– дистрибутив Java.
Внимание
Присутствующий в пакете дистрибутив CryptoPro CSP предназначен для установки в ОС CentOS, RedOS, ALT SP Server 10. Для Astra Linux, необходимо загрузить с сайта производителя https://cryptopro.ru/sites/default/files/private/csp/50/11455/linux-amd64_deb_astrasign.tgz дисрибутив CryptoPro CSP, соответствующий используемой операционной системе.
Путь /distr/einfahrt указан в качестве примера. Есть возможность использовать любой другой путь,
скорректировав соответствующим образом упоминаемые ниже команды.
4.2.2. Предварительные операции (установка «пре-реквизитов»)
Перед запуском Агента СМЭВ4 выполнить от имени пользователя root либо используя команду sudo следующие действия:
Создать пользователя {{user}} и группу {{user_group}}, под которым будет работать Агент СМЭВ4.
Установить java
cd /distr/einfahrt
tar zxvf bellsoft-jdk17.0.7-linux-amd64.tar.gz
Установить системные переменные
export JAVA_HOME=/distr/einfahrt/jdk-17.0.7
export PATH=$PATH:$JAVA_HOME/bin
Переменные должны устанавливаться автоматически также после перезагрузки сервера. Для этого рекомендуется внести данную настройку в profile пользователя либо в настройки ОС.
Установить CryptoPro CSP:
При установке на CentOS, RedOS:
cd /distr/einfahrt
tar -xzvf csp-5.0.11455.tar.gz
rm -f csp-5.0.11455.tar.gz
cd csp-5.0.11455
yum -y install lsb-cprocsp-base*.rpm lsb-cprocsp-rdr-64*.rpm lsb-cprocsp-kc1-64*.rpm lsb-cprocsp-capilite-64*.rpm lsb-cprocsp-devel*.rpm lsb-cprocsp-kc2-64*.rpm cprocsp-curl-64*.rpm
./install.sh
cd ..
При установке на Astra Linux:
cd /distr/einfahrt
tar -xzvf linux-amd64_deb_astrasign.tgz
rm -f linux-amd64_deb_astrasign.tgz
cd linux-amd64_deb
apt -y install lsb-cprocsp-base*.deb lsb-cprocsp-rdr-64*.deb lsb-cprocsp-kc1-64*.deb lsb-cprocsp-capilite-64*.deb lsb-cprocsp-devel*.deb lsb-cprocsp-kc2-64*.deb cprocsp-curl-64*.deb
./install.sh
cd ..
При установке на ALT SP Server 10:
cd /distr/einfahrt
tar -xzvf csp-5.0.11455.tar.gz
rm -f csp-5.0.11455.tar.gz
cd csp-5.0.11455
apt-get -y install lsb-cprocsp-base*.rpm lsb-cprocsp-rdr-64*.rpm lsb-cprocsp-kc1-64*.rpm lsb-cprocsp-capilite-64*.rpm lsb-cprocsp-devel*.rpm lsb-cprocsp-kc2-64*.rpm cprocsp-curl-64*.rpm
./install.sh
cd ..
При наличии лицензионного кода CryptoPro CSP выполнить команду:
sudo /opt/cprocsp/sbin/amd64/cpconfig -license -set {{cprocsp_license_code}}
В случае отсутствия лицензионного кода, CryptoPro CSP будет работать в режиме trial лицензии.
Внимание
Срок действия trial лицензии – 90 дней с момента установки CryptoPro CSP. Для сохранения работоспособности Агента СМЭВ4 по окончании данного периода, необходимо приобрести лицензию на CryptoPro CSP и внести её в систему как указано выше.
Установить контейнер ключа CryptoPro в директорию
/var/opt/cprocsp/keys/{{user}}/. Пользователь {{user}} должен быть владельцем данной директории и файлов в ней.Выложить в каталог
/distr/enfahrtконфигурационный файлapplication.yml, подготовленный согласно Раздел 3.В файл
/etc/hostsдобавить следующие записи:
172.20.59.5 podd.gosuslugi.ru
172.20.59.5 podd-cross.gosuslugi.ru
109.207.15.26 podd1.gosuslugi.ru
109.207.15.58 podd2.gosuslugi.ru
109.207.15.154 podd3.gosuslugi.ru
109.207.15.186 podd4.gosuslugi.ru
109.207.15.26 podd1-cross.gosuslugi.ru
109.207.15.58 podd2-cross.gosuslugi.ru
109.207.15.154 podd3-cross.gosuslugi.ru
109.207.15.186 podd4-cross.gosuslugi.ru
4.2.3. Запуск Агента СМЭВ4
Убедитесь, что пользователь {{user}} имеет доступ к директории, в которой установлен Агент СМЭВ4 (/distr/einfahrt).
Пример раздела конфигурации скрипта для запуска Агента СМЭВ4 с использованием сервиса systemd:
[Unit]
Description="Service for einfahrt"
After=syslog.target
[Service]
Type=simple
WorkingDirectory=/distr/einfahrt
LimitNOFILE=1048576:1048576
# Важно! Запуск должен производиться от имени того пользователя, для которого ранее были выложены ключи КриптоПро!
User={{user}}
Group={{user_group}}
Environment="JAVA_HOME=/distr/einfahrt/jdk-17.0.7"
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 \
--add-opens=java.base/java.util=ALL-UNNAMED \
-Dio.netty.tryReflectionSetAccessible=true \
-Dsaffron.default.charset=UTF-16LE \
-Dsaffron.default.collation.name='UTF-16LE$en_US' \
-Dsaffron.default.nationalcharset=UTF-16LE \
-XX:MaxRAMPercentage=80.0"
ExecStart=/distr/einfahrt/jdk-17.0.7/bin/java -jar app/app.jar
[Install]
WantedBy=multi-user.target
Соответствующий файл скрипта, для примера с названием einfahrt.service, необходимо сохранить
в каталог /etc/systemd/system/.
Далее выполнить команды по включению, запуску сервиса и проверке его статуса:
sudo systemctl daemon-reload
sudo systemctl enable einfahrt
sudo systemctl start einfahrt
sudo systemctl -l status einfahrt
4.2.4. Настройка ротации логов (опционально)
Во избежание переполнения диска лог-файлами, рекомендуется настроить ротацию лог-файлов systemd сервиса.
Настройка логирования осуществляется с помощью файлов конфигурации logrotate и systemd сервиса. Если этих файлов не существует, их необходимо создать.
Первоначально необходимо установить пакет logrotate, для rpm-base дистрибутивов необходимо выполнить команду:
sudo yum install logrotate
Добавьте в файл systemd сервиса (/etc/systemd/system/einfahrt.service) следующие настройки логирования:
...
[Service]
Type=simple
StandardOutput=append:/var/log/{{ file_name }}
StandardError=append:/var/log/{{ file_name }}
...
Создайте файл конфигурации logrorate /etc/logrotate.cron/einfahrt.conf и поместите в него следующее содержимое:
/var/log/{{ file_name }} {
rotate {{ rotate }}
size {{ file_size }}
create
nocompress
copytruncate
}
где:
rotate– какое количество лог файлов оставлять,file_size– размер лог-файла при котором будет происходить ротация.
Создайте файл с скриптом запуска утилиты logrotate, поместите скрипт по пути /etc/logrotate.cron/einfahrt.sh
#!/bin/bash
/usr/sbin/logrotate /etc/logrotate.cron/einfahrt.conf
Добавьте права на запуск командой:
chmod +x /etc/logrotate.cron/einfahrt.sh
Создайте правила cron, создайте файл /etc/cron.d/einfahrt и поместите в него содержимое ниже:
*/1 * * * * root /etc/logrotate.cron/einfahrt_logrotate.sh
Далее перезагрузите systemd сервис:
sudo systemctl daemon-reload
sudo systemctl restart einfahrt
4.3. Настройка и запуск Агента СМЭВ4 с использованием docker
4.3.1. Предварительные условия
На сервере должен быть установлен docker версии не ниже 20.10.12.
Создан пользователь, который будет запускать Агент СМЭВ4.
Этот пользователь должен иметь права на загрузку докер-образов и запуск/остановку контейнеров (т.е. добавлен в группу docker).
4.3.2. Настройка ротации лог-файлов в docker (опционально)
Во избежание переполнения диска лог-файлами, рекомендуется настроить ротацию лог-файлов контейнеров в docker.
Настройка логирования в Docker осуществляется с помощью файла конфигурации /etc/docker/daemon.json.
Если этого файла не существует, его необходимо создать. Добавьте в файл следующие настройки логирования:
{
"log-opts": {
"max-file": "3",
"max-size": "100m"
}
}
где:
max-file– ограничение по количеству файлов (настройки ротации). Максимальное количество файлов журнала, которые могут быть созданы. При превышении количества самый старый файл удаляется. Действует только при установленном параметреmax-size. Положительное целое число. По умолчанию 1;max-size– устанавливает ограничение по размеру лог-файла (k, m или g). По умолчанию -1 (не ограничено).
4.3.3. Состав и содержание дистрибутивного пакета
Ниже приведён состав дистрибутива Агента СМЭВ4 для docker.
/distr/einfahrt – Агент СМЭВ4:
/distr/einfahrt/image.tgz– docker image для загрузки в систему. Включает в себя также необходимую версию CryptoPro;/distr/einfahrt/run_agent.sh– скрипт для запуска и перезапуска агента;/distr/einfahrt/stop.sh– скрипт для остановки агента;/distr/einfahrt/log_save.sh– скрипт для сохранения лога агента в файл;/distr/einfahrt/log.sh– скрипт для просмотра лога агента в реальном времени;/distr/einfahrt/diag.sh– скрипт для сбора диагностической информации при обращении в службу поддержки.
Путь /distr/einfahrt использован для примера, не является фиксированным и может быть изменен на любой другой по
желанию пользователя, с соответствующим внесением корректировок при его упоминаниях ниже.
Ниже в качестве примера будет использоваться данный путь.
4.3.4. Подготовка к запуску
Для запуска Агента СМЭВ4 необходимо после распаковки пакета сформировать конфигурационный файл application.yml,
как указано в Раздел 3.3 , и выложить его в каталог /distr/einfahrt.
В каталоге /distr/einfahrt:
создать подкаталог
keys, выложить в него полученный ключ CryptoPro в распакованном виде ;(только при использовании https API gateway) создать подкаталог
certs, подготовить файл cacerts согласно Раздел 3.3.8, сформированный файл выложить в каталог/distr/einfahrt/certs.
При наличии файла расширенных настроек логирования customLogLevels.xml выложить его в каталог /distr/einfahrt.
Для запуска Агента СМЭВ4 под docker полученный docker образ необходимо загрузить в локально установленный docker на машине, где будет работать Агент СМЭВ4.
Для этого необходимо выложить архив с образом на локальный диск этой машины и выполнить команду:
docker load < image.tgz
где image.tgz – имя полученного архива с docker image Агента СМЭВ4 из пакета поставки.
Загрузка должна завершиться без ошибок.
Проверить успешность загрузки можно командой:
docker images | grep einfahrt
Вывод будет содержать информацию следующего вида:
einfahrt latest c7511824117e 5 days ago 1.2G
4.3.5. Запуск Агента СМЭВ4
Для запуска Агента СМЭВ4 используется скрипт run_agent.sh, входящий в пакет поставки.
Скрипт не требует указания параметров. При выполнении всех шагов, перечисленных в Раздел 4.3.4,
Агент СМЭВ4 будет успешно запущен, с сообщением о доступных портах. При повторном выполнении скрипта контейнер будет
остановлен и запущен заново.
Для сохранения лога Агента СМЭВ4 в файл, запустите скрипт log-save.sh. Лог будет сохранен в файле log-дата-время.txt.
Для просмотра лога в режиме реального времени запустите скрипт log.sh.
В случае необходимости сбора диагностической информации для отправки в службу поддержки запустите скрипт diag.sh.
Остановка контейнера осуществляется скриптом stop.sh.
Примечание
В ряде случаев может наблюдаться остановка контейнера через несколько секунд после запуска, с сообщением в логе java.lang.IllegalStateException: Ошибка вызова функции acquireContext: 0x8009001a. В этом случае следует изменить владельца каталога keys и вложенных подкаталогов и файлов на пользователя с id=1000 (потребуются root права): chown -R 1000 keys после чего повторить выполнение скрипта запуска контейнера.
4.3.6. Информация по лицензированию CryptoPro
Входящий в поставку дистрибутив CryptoPro не имеет предустановленной лицензии, и может работать в «пробном режиме» в течение трех месяцев с момента создания образа (не с момента первого запуска!)
Для использования пробной версии CryptoPro не требуется каких-либо дополнительных действий, касающихся лицензирования.
В случае, если имеется в наличии полная лицензия на CryptoPro CSP, предусмотрена возможность передачи номера лицензий CSP при запуске контейнера. При передаче валидной лицензии CryptoPro будет лицензирована на этапе запуска.
Для этого необходимо, чтобы текстовый файл, содержащий строку с лицензией на CryptoPro CSP, был при запуске контейнера
доступен внутри контейнера по пути /egov/csp.lic.
При запуске под docker-ом можно для этого монтировать внешние файлы, содержащие номера лицензии, по указанным выше путям.
Для того, чтобы прилагаемый скрипт запуска применил лицензию CryptoPro, при её наличии, её необходимо поместить в текстовый файл ``licenses/csp.txt``. При отсутствии лицензии и использовании пробной версии CryptoPRO не создавайте указанные файлы.
Внимание
Срок действия пробной лицензии – 90 дней с момента создания docker image используемого Агента. Для сохранения работоспособности Агента СМЭВ4 по окончании данного периода необходимо приобрести лицензию на CryptoPro CSP и внести ее в систему, как указано выше.
4.4. Настройка сбора метрик Агента СМЭВ4 (опционально)
4.4.1. Настройка Агента СМЭВ4 для передачи метрик в Prometheus
Агент поддерживает возможность передачи метрик работы во внешнюю систему сбора метрик Prometheus.
Для включения возможности передачи необходимо добавить в конфигурационный файл следующие параметры:
metrics:
implementation: PROMETHEUS
# порт, при обращении к которому Агент отдаёт значения метрик
endpointPort: 8381
Prometheus следует настроить на опрос адреса, на котором запущен Агент СМЭВ4, по указанному порту.
При запуске Агента под docker также необходимо добавить указанный порт в список expose ports в скрипте запуска Агента.
Полный список метрик приведен в Раздел 9.