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. Создать каталог /distr/einfahrt, владельцем каталога назначить пользователя {{user}} Создать каталог /distr/einfahrt/app, скопировать в него исполняемый файл Агента app.jar из дистрибутивного пакета.
Установить 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 ОС (/etc/profile.d).
Установить 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 8 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, подготовленный согласно описания в разделе Раздел 5.
В файл
/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
Или выполнить команды:
echo -e “\n\n# Адреса сервиса аутентификации Агента СМЭВ4”
echo -e “\n\n172.20.59.5 podd.gosuslugi.ru” >> /etc/hosts
echo -e “172.20.59.5 podd-cross.gosuslugi.ru” >> /etc/hosts
echo -e “109.207.15.26 podd1.gosuslugi.ru” >> /etc/hosts
echo -e “109.207.15.58 podd2.gosuslugi.ru” >> /etc/hosts
echo -e “109.207.15.154 podd3.gosuslugi.ru” >> /etc/hosts
echo -e “109.207.15.186 podd4.gosuslugi.ru” >> /etc/hosts
echo -e “109.207.15.26 podd1-cross.gosuslugi.ru” >> /etc/hosts
echo -e “109.207.15.58 podd2-cross.gosuslugi.ru” >> /etc/hosts
echo -e “109.207.15.154 podd3-cross.gosuslugi.ru” >> /etc/hosts
echo -e “109.207.15.186 podd4-cross.gosuslugi.ru” >> /etc/hosts
4.2.3. Запуск Агента СМЭВ4
Убедитесь, что пользователь {{user}} имеет доступ к директории, в которой установлен Агент СМЭВ4 (/distr/einfahrt).
Пример раздела конфигурации скрипта для запуска Агента СМЭВ4 с использованием сервиса systemd
Данный файл, с названием einfahrt.service, необходимо сохранить в каталог /etc/systemd/system/, указав, при необходимости,
корректные пути к файлам:
[Unit]
Description="Service for einfahrt"
After=syslog.target
[Service]
Type=simple
WorkingDirectory=/distr/einfahrt
LimitNOFILE=1048576:1048576
# Важно! Запуск должен производиться от имени того пользователя, для которого ранее были выложены ключи CryptoPro!
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
Далее от имени пользователя root или используя sudo выполнить команду по включению, запуску сервиса и проверке его статуса:
sudo systemctl daemon-reload
sudo systemctl enable einfahrt
sudo systemctl start einfahrt
sudo systemctl -l status einfahrt
4.2.4. Проверка работоспособности Агента СМЭВ4 после включения и запуска сервиса
Для проверки соединения Агента с Ядром ПОДД необходимо выполнить команду с использованием утилиты curl.
Примечание
Команда выполняется под ROOT-пользователем, или через SUDO.
Если утилита Curl не установлена необходимо ее установить из базового репозитория для Astra Linux 1.7 SE (Воронеж, Смоленск) командой:
sudo apt-get install curl
для RedOS 7.3
sudo dnf install curl
Проверка корректной установки Агента СМЭВ4 осуществляется командой:
curl -X POST 'http://agent-ip-address:8192/query?async=false' -H "Accept-Version: 1" -H "Content-Type: application/json" -d '{"sql": {"sql": "select 1"}}'
Вывод должен быть следующим:
{
"created_at": "YYYY-MM-DD HH-MM-SS",
"query_id": "<identifier>",
"meta": [
{
"name": "EXPR$0",
"type": "INTEGER"
}
],
"rows": [
[
"1"
]
]
}
4.2.5. Настройка ротации логов (опционально)
Во избежание переполнения диска лог-файлами, рекомендуется настроить ротацию лог-файлов 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 (/distr/einfahrt) для Docker:
/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,
как указано в Раздел 5.3 , и сохранить его в каталог /distr/einfahrt.
В каталоге /distr/einfahrt:
создать подкаталог
keys, сохранить в него полученный ключ CryptoPro в распакованном виде ;(только при использовании https API gateway) создать подкаталог
certs, подготовить файл cacerts согласно Раздел 5.3.10, сформированный файл сохранить в каталог/distr/einfahrt/certs.
При наличии файла расширенных настроек логирования customLogLevels.xml сохранить его в каталог /distr/einfahrt.
Для запуска Агента СМЭВ4 под docker, полученный docker образ необходимо загрузить в локально установленный docker на машине, где будет работать Агент СМЭВ4.
Для этого необходимо сохранить архив с образом на локальный диск этой машины и выполнить команду:
docker load < image.tgz
где image.tgz – имя полученного архива с docker образом Агента СМЭВ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.4. Обновление Агента СМЭВ4
Для обновления версии Агента СМЭВ4 необходимо выполнить следующие шаги:
Скачать с портала ЕСКС образцы файлов конфигурирования нужной версии.
Заполнить файл конфигурации
application.yamlактуальными данными в соответствии с описанием Раздел 5.3.Из пакета с дистрибутивом скопировать новую версию исполняемого файла Агента
app.jarпапку/distr/einfahrt/app, как указано в Раздел 4.2.2.Проверить файл
einfahrt.serviceна соответствие с описанием в Раздел 4.2.3Перезапустить Агент СМЭВ4.
4.4.1. Информация по лицензированию CryptoPro
Входящий в поставку дистрибутив CryptoPro не имеет предустановленной лицензии, и может работать в «пробном режиме» в течение трех месяцев с момента создания образа (не с момента первого запуска!)
Для использования пробной версии CryptoPro не требуется каких-либо дополнительных действий, касающихся лицензирования.
В случае, если имеется в наличии полная лицензия на CryptoPro CSP, предусмотрена возможность передачи номера лицензий CSP при запуске контейнера. При передаче валидной лицензии CryptoPro будет лицензирована на этапе запуска.
Для этого необходимо, чтобы текстовый файл, содержащий строку с лицензией на CryptoPro CSP, был при запуске контейнера
доступен внутри контейнера по пути /egov/csp.lic.
При запуске под docker-ом можно для этого монтировать внешние файлы, содержащие номера лицензии, по указанным выше путям.
Для того, чтобы прилагаемый скрипт запуска применил лицензию CryptoPro, при её наличии, её необходимо поместить в текстовый файл ``licenses/csp.txt``. При отсутствии лицензии и использовании пробной версии CryptoPRO не создавайте указанные файлы.
Внимание
Срок действия пробной лицензии – 90 дней с момента создания docker image используемого Агента. Для сохранения работоспособности Агента СМЭВ4 по окончании данного периода необходимо приобрести лицензию на CryptoPro CSP и внести ее в систему, как указано выше.