Содержание

Перед обновлением X-Road настоятельно рекомендуется снять snapshot сервера и backup конфигурации X-Road!

Обновление Security Server X-Road с версии 7.3.2 до версии 7.4.2 на Ubuntu 22.04

В этом документе описываются шаги, необходимые для обновления программного обеспечения X-Road Security Server с версии 7.3.2 до версии 7.4.2 на Ubuntu 22.04 LTS. Пожалуйста, внимательно прочитайте весь документ перед началом процесса обновления. Предполагается, что читатель знаком с дистрибутивом Ubuntu Linux и имеет опыт администрирования серверов безопасности X-Road.

Данное обновление не затрагивает версию операционной системы и PostgreSQL. Обновляется только программное обеспечение X-Road.
Внимание! В версии 7.4.0 произошли крупные изменения платформы:
  • Минимальная версия Java повышена с 11 до 17 (apt подтянет автоматически как зависимость).
  • Akka заменён на gRPC — устаревшие параметры akka.* в local.ini необходимо удалить вручную.
  • UI обновлён с Vue 2 на Vue 3, серверная часть — со Spring Boot 2 на Spring Boot 3.
  • Алгоритм хеширования глобальной конфигурации переключён с SHA-1 на SHA-256.

Подготовка

dpkg -l | grep xroad

Все пакеты должны показывать версию 7.3.2.

sudo apt update && sudo apt full-upgrade
sudo -iu postgres pg_dump -d serverconf -F c -f /var/lib/xroad/backup/serverconf_backup_$(date +%Y%m%d).sql
sudo cp -r /etc/xroad /etc/xroad.backup.$(date +%Y%m%d)
sudo grep -i akka /etc/xroad/conf.d/local.ini 2>/dev/null

Если команда вернула какие-либо строки (например, *.akka.remote.artery.advanced.maximum-frame-size) — эти параметры нужно удалить или закомментировать перед обновлением, так как Akka больше не используется в 7.4.0+.

Не пропускайте этап резервного копирования. В случае неудачного обновления бэкап позволит восстановить работоспособность сервера.

Обновление X-Road

Шаг 1. Остановить службы X-Road и убедиться что службы остановлены

sudo systemctl stop "xroad-*" && sudo systemctl list-units "xroad*"
UNIT LOAD ACTIVE SUB DESCRIPTION
0 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

Шаг 2. Заменить репозиторий пакетов

Если GPG-ключ /etc/apt/keyrings/xroad.asc отсутствует, предварительно выполните:

sudo wget -qO - https://deb.tunduk.kg/key.pub | sudo tee /etc/apt/keyrings/xroad.asc

Заменить репозиторий на версию 7.4.2 и выполнить полное обновление пакетов:

sudo rm /etc/apt/sources.list.d/xroad.list && echo "deb [signed-by=/etc/apt/keyrings/xroad.asc] https://deb.tunduk.kg/ubuntu22.04-7.4.2 /" | sudo tee /etc/apt/sources.list.d/xroad.list && sudo apt-get update && sudo apt-get -y full-upgrade

Шаг 3. Запустить службы X-Road

sudo systemctl start "xroad-*"

Или запустить через основной сервис:

sudo systemctl start xroad-proxy

Проверка после обновления

Проверка версии пакетов

dpkg -l | grep xroad

Все пакеты должны показывать версию 7.4.2.

Проверка состояния служб

sudo systemctl list-units "xroad*"

Ожидаемый результат:

  UNIT                           LOAD   ACTIVE SUB     DESCRIPTION               
  xroad-addon-messagelog.service loaded active running X-Road Messagelog Archiver
  xroad-base.service             loaded active exited  X-Road initialization     
  xroad-confclient.service       loaded active running X-Road confclient         
  xroad-monitor.service          loaded active running X-Road Monitor            
  xroad-opmonitor.service        loaded active running X-Road opmonitor daemon   
  xroad-proxy-ui-api.service     loaded active running X-Road Proxy UI REST API  
  xroad-proxy.service            loaded active running X-Road Proxy              
  xroad-signer.service           loaded active running X-Road signer

Настройка портов точки доступа информационной системы

Внимание! В версии 7.4.0 на Ubuntu порты точки доступа информационной системы по умолчанию изменены с 80/443 на 8080/8443. Чтобы сервер безопасности продолжил принимать запросы от информационных систем на портах 80 и 443, необходимо вручную переопределить значения в конфигурационном файле.
sudo nano /etc/xroad/conf.d/local.ini
[proxy]
client-http-port=80
client-https-port=443
sudo chown xroad:xroad /etc/xroad/conf.d/local.ini
sudo chmod 640 /etc/xroad/conf.d/local.ini
sudo systemctl restart xroad-proxy
sudo ss -tlnp | grep -E ':(80|443|8080|8443)\s'

Проверка веб-интерфейса

Откройте https://SECURITYSERVER:4000/ в веб-браузере. Для входа используйте учётную запись, заданную при установке.

Для запуска веб-интерфейса требуется некоторое время. Вы можете увидеть ошибку «502 Bad Gateway» — подождите 1-2 минуты и обновите страницу.

Проверка глобальной конфигурации

Перейдите в раздел Diagnostics в веб-интерфейсе и убедитесь, что статус Global configuration — «OK».

Если статус «Failure» или «Error» — возможно, требуется новый файл привязки глобальной конфигурации (configuration anchor), сгенерированный после обновления Central Server. Запросите актуальный anchor у администраторов СМЭВ «Тундук» и загрузите его через Settings → System Parameters → Configuration Anchor → Upload.

Проверка OCSP статуса сертификатов

Перейдите в раздел Keys and Certificates и убедитесь, что OCSP статус сертификатов — «Good».

Если OCSP статус «Unknown» — перезапустите службу systemctl restart xroad-proxy или дождитесь автоматического обновления (по умолчанию раз в 48 минут). Также можно проверить статус в разделе Diagnostics.

Проверка логов

sudo journalctl -u xroad-proxy -n 100 --no-pager
sudo journalctl -u xroad-signer -n 50 --no-pager

Убедитесь, что в логах нет критических ошибок.

Проверка версии Java

java -version

Ожидаемый результат должен содержать openjdk version «17.x.x». Java 17 ставится автоматически как зависимость при обновлении пакетов X-Road 7.4.2.

Если в файле /etc/xroad/services/local.conf есть строка с JAVA_HOME — удалите её. Это актуально только для серверов, которые обновлялись с версий до 7.0.0.

Пост-обновление: что нужно знать

Автоматические бэкапы

Начиная с версии 7.3.0, расписание автоматических бэкапов задаётся не через cron, а через параметр в файле /etc/xroad/conf.d/local.ini.

Если вы ранее изменяли расписание бэкапов в файле /etc/cron.d/xroad-proxy, перенесите настройку вручную:

sudo nano /etc/xroad/conf.d/local.ini

Добавьте или отредактируйте секцию:

[configuration-client]
proxy-configuration-backup-cron=0 15 3 * * ?

После изменения перезапустите конфигурационный клиент:

sudo systemctl restart xroad-confclient

Удалённые и переименованные свойства конфигурации

В версии 7.4.0 на Security Server полностью удалены следующие параметры rate limiting — если они присутствуют в local.ini, их необходимо убрать:

Следующие свойства считаются устаревшими (deprecated), но продолжают работать:

Старое свойство Новое свойство
request.sizelimit.regular proxy-ui-api.request-sizelimit-regular
request.sizelimit.binary.upload proxy-ui-api.request-sizelimit-binary-upload

Рекомендуется при возможности перейти на новые имена свойств.

Akka-параметры

После замены Akka на gRPC в 7.4.0 любые параметры вида *.akka.* в /etc/xroad/conf.d/local.ini игнорируются и должны быть удалены вручную (см. раздел «Подготовка»).

Откат обновления

В случае проблем после обновления:

Вариант 1: Восстановление из snapshot

Если перед обновлением был сделан snapshot виртуальной машины — восстановите его.

Вариант 2: Откат пакетов на версию 7.3.2

Удалить репозиторий 7.4.2:

sudo rm /etc/apt/sources.list.d/xroad.list

Добавить репозиторий 7.3.2:

echo "deb [signed-by=/etc/apt/keyrings/xroad.asc] https://deb.tunduk.kg/ubuntu22.04-7.3.2 /" | sudo tee /etc/apt/sources.list.d/xroad.list

Выполнить переустановку:

sudo apt-get update
sudo apt-get install --reinstall xroad-securityserver xroad-addon-opmonitoring
Остальные пакеты X-Road подтянутся автоматически как зависимости основного метапакета.

Вариант 3: Восстановление конфигурации из бэкапа

Если конфигурация повреждена, восстановите её из резервной копии:

sudo -u xroad /usr/share/xroad/scripts/restore_xroad_proxy_configuration.sh \
  -s <security server ID> \
  -f /var/lib/xroad/backup/<backup_file>.tar

Поиск неисправностей

Службы не стартуют после обновления

Проверьте логи конкретного сервиса:

sudo journalctl -u xroad-proxy -n 200 --no-pager
sudo journalctl -u xroad-signer -n 200 --no-pager
sudo journalctl -u xroad-proxy-ui-api -n 200 --no-pager

Ошибка «502 Bad Gateway» не пропадает

Убедитесь, что сервис xroad-proxy-ui-api запущен:

sudo systemctl status xroad-proxy-ui-api

Если сервис не запускается, проверьте лог:

sudo tail -100 /var/log/xroad/proxy_ui_api.log

Проблемы с базой данных

Проверьте доступность базы данных:

sudo -u postgres psql -c "SELECT pg_database.datname, 
       pg_size_pretty(pg_database_size(pg_database.datname)) AS size 
FROM pg_database 
WHERE datname IN ('serverconf', 'messagelog', 'op-monitor');"

При необходимости восстановите базу данных из резервной копии:

sudo -iu postgres pg_restore -d serverconf -c /var/lib/xroad/backup/serverconf_backup_YYYYMMDD.sql

Проблемы с токеном

Если после обновления токен не активен:

—-

Автор Кирилл Захаров, Даниил Горбенко