Общее описание
Для обеспечения безопасного взаимодействия между администратором и системой NAICE реализована защита пользовательских интерфейсов: lemmus, gavia, larus, castor и sterna. HTTP-трафик полностью зашифрован с использованием протокола TLS, что предотвращает перехват данных и несанкционированный доступ.
Во время установки сервисов NAICE для пользовательских интерфейсов автоматически выполняется генерация двух самоподписанных сертификата, что позволяет обеспечить защищённое взаимодействие через HTTPS на основе параметров, указанных в конфигурации. Подробнее про установку сервисов NAICE здесь.
Генерируются различные сертификаты для двух групп сервисов:
- Административные сервисы:
- Gavia REST API Gateway - внешнее API для управления NAICE;
- Lemmus, Authorization Server - сервер авторизации для администраторов;
- Larus - WEB GUI для администратора;
- Портальные сервисы:
- Castor - API управления настройкой порталов и портальной авторизацией;
- Sterna - WEB GUI портала.
При наличии стороннего центра сертификации (ЦС) предусмотрена возможность заменить самоподписанные сертификаты на выпущенные сторонним ЦС.
Установка сертификата, выпущенного сторонним ЦС
При установке NAICE через OVA-образ замена выполняется по инструкции v1.1_3.2.6 Замена портальных/WEB сертификатов.
Требования к сертификату
Сертификат должен соответствовать всем нижеуказанным требованиям для обеспечения корректной работы с сервисом NAICE:
- Сертификат должен быть в формате PEM или CRT. Использование сертификатов в формате DER или контейнеров PKCS не поддерживается.
- Ключ сертификата должен шифроваться с использованием шифрования AES или не использовать защиту шифрованием.
- Сертификат и приватный ключ должны быть отдельными файлами.
- В пароле не допускается использование символов: $, ', ", `, скобок и пробелов.
- Сертификат должен содержать атрибуты:
- Subject: CN;
- X509v3 Key Usage: Digital Signature, Key Encipherment (обязательно critical);
- X509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication;
- X509v3 Subject Alternative Name: должен включать DNS-имя, соответствующее DNS имени сервера или IP Address, соответствующий адресу сервера;
- В случае, если NAICE используется в схеме резервирования без VRRP, атрибут X509v3 Subject Alternative Name должен включать DNS-имя или IP Address каждого сервера с NAICE.
Предварительная подготовка перед заменой сертификата
Замена самоподписанного сертификата на собственный заверенный сертификат становится возможной после завершения установки NAC-системы NAICE на целевом хосте.
Для замены сертификата на собственный необходимо указать соответствующие значения переменных в файле group_vars/all.yml.
Файлы сертификата должны быть размещены на хосте, с которого осуществляется запуск плейбука.
Описание параметров, которые необходимо настроить перед заменой сертификата:
| Переменная | Описание |
|---|---|
cert_path | Директория, в которую будет помещен сертификат на целевом хосте, указывается относительно директории установки NAICE в переменной naice_address. Изменение данной переменной не рекомендуется! |
| server_domain | DNS-имя или IP-адрес сервера NAICE |
| cert_name | Признак. указывающий какой сертификат требуется заменить: WEB GUI NAICE ( |
| key_password | Пароль к файлу приватного ключа сервера, который будет перезаписан в .env. Может иметь пустое значение, если пароль не используется. |
| cert_path_src | Путь до файла собственного заверенного сертификата сервера. По умолчанию - /etc/ssl/certs/server.crt |
| key_path_src | Путь до файла приватного ключа от сертификата сервера. По умолчанию - /etc/ssl/private/server.key |
Если в переменной server_domain используется DNS-имя сервера, необходимо обеспечить разрешение данного имени DNS-сервером, который используется в настройках NAICE и на рабочих местах администраторов, имеющих доступ к WEB GUI NAICE. В противном случае доступ к GUI станет невозможным.
Замена на собственный сертификат
Прежде чем производить замену сертификата, убедитесь, что значение переменных server_domain, cert_name, cert_path_src, key_path_src, key_password являются валидными и при необходимости замените их значения в ansible/group_vars/all.yml.
Если приватный ключ не защищён паролем, значение переменной key_password следует оставить пустым.
После настройки всех переменных для замены сертификата необходимо запустить плейбук:
ansible-playbook https-replacement-cert.yml
Если с хоста, на котором выполняется запуск плейбука ansible не разрешается DNS-имя, указанное в переменной server_domain - плейбук не будет выполнен, возникнет ошибка.
Во время выполнения плейбука для замены сертификата потребуется дважды подтвердить согласие на перезапуск системы NAICE. Это подтверждение необходимо для продолжения операции и замены сертификата.
- В случае отказа от перезапуска плейбук завершится, и процесс замены сертификата не будет выполнен.
- При подтверждении перезапуска будет произведен перезапуск системы NAICE, что может привести к кратковременной недоступности системы.
Замена сертификата без интерактивного подтверждения запуска:
ansible-playbook https-replacement-cert.yml -e "confirm_restart=yes"
Сертификаты и приватные ключи всегда сохраняются под указанным в переменной cert_name имени (server.crt / server.key и portal.crt / portal.key). При копировании или генерации сертификатов файлы будут записаны с этими именами и затрут существующие файлы!
Важно учитывать, что перезапуск может повлиять на текущую работу системы, поэтому рекомендуется планировать его на время с минимальной нагрузкой или в период, когда минимально возможно влияние на работу пользователей.
Инструкция по замене сертификата для установки NAICE с резервированием
Замена сертификатов в схеме с резервированием с использованием VRRP
В данной схеме доменное имя, которое будет использоваться для подключения к WEB GUI должно разрешаться только в VIP-адрес NAICE! Требуется убедиться, что в настройках DNS и файлах хостов отсутствуют записи, указывающие на индивидуальные IP-адреса нод.
- На обоих нодах требуется использовать один и тот же сертификат NAICE.
- Замена выполняется последовательно на первой и второй ноде NAICE.
- Адрес ноды, на которой будет выполняться замена сертификата требуется указывать в файле
inventory/hosts.yml.
Для замены сертификата необходимо выполнить следующие действия:
Перед запуском плейбука внимательно ознакомьтесь с разделом Предварительная подготовка перед заменой сертификата и замена на собственный сертификат.
- Определить, какая из нод с NAICE является VRRP
master, а какая VRRPbackup - Указать в файле
inventory/hosts.ymlадрес VRRPmaster Выполнить плейбук
https-replacement-cert.ymlна VRRPmasterПроверить доступность NAICE по домену, указанному в сертификате.
- Указать в файле
inventory/hosts.ymlадрес VRRPbackup Выполнить плейбук
https-replacement-cert.ymlна VRRPbackup- Перевести VRRP мастерство на вторую ноду (VRRP backup). Для этого на хосте, где находиться VIP адрес необходимо выполнить команду:
sudo systemctl restart keepalived
- Повторно проверить доступность NAICE по домену, указанному в сертификате.
- Вернуть VRRP мастерство обратно.
Замена сертификатов в схеме с резервированием без использования VRRP
В данной схеме каждый хост будет иметь свое доменное имя. Это потребует, что бы каждое из данных имён было прописано в сертификате в атрибуте X509v3 Subject Alternative Name. Каждое из данных доменных имён должно разрешаться DNS сервером, указанным на виртуальных машинах предназначенных для установки NAICE и рабочих местах администраторов.
- На обоих нодах требуется использовать один и тот же сертификат NAICE.
- Замена выполняется последовательно на первой и второй ноде NAICE.
- Адрес ноды, на которой будет выполняться замена сертификата требуется указывать в файле
inventory/hosts.yml. - В переменной
server_domainфайлаgroup_vars/all.ymlнеобходимо указать доменное имя виртуальной машины с NAICE, на которой будет выполняться замена сертификата.
Для замены сертификата необходимо выполнить следующие действия:
Перед запуском плейбука внимательно ознакомьтесь с разделом Предварительная подготовка перед заменой сертификата и замена на собственный сертификат.
- Указать в файле
inventory/hosts.ymlадрес первой ноды - Указать в файле
group_vars/all.ymlв переменнойserver_domainдоменное имя первой ноды Выполнить плейбук
https-replacement-cert.ymlдля первой нодыПроверить доступность NAICE по доменному имени первой ноды
- Указать в файле
inventory/hosts.ymlадрес второй ноды - Указать в файле
group_vars/all.ymlв переменнойserver_domainдоменное имя второй ноды Выполнить плейбук
https-replacement-cert.ymlдля второй нодыПроверить доступность NAICE по доменному имени второй ноды
Удаление сторонних сертификатов и восстановление конфигурации по умолчанию
При установке NAICE через OVA-образ восстановление конфигурации по умолчанию выполняется по инструкции v1.1_ru_3.3.5 Замена портальных/WEB сертификатов
После замены сертификата старый будет затерт! При необходимости возврата к самоподписному сертификату необходимо выполнить его повторный выпуск!
Повторный выпуск сертификата выполняется путём удаления ранее установленных сертификатов и повторным выполнением плейбука установки.
Удалить установленные сертификаты командой (если используется установка с резервированием - необходимо выполнить удаление на каждой ноде NAICE):
# По умолчанию папка установки NAICE /etc/docker-naice sudo rm -v <папка установки NAICE>/https/*
После удаления сертификатов выполнить повторно плейбук установки.
Для однохостовой установки:
ansible-playbook install-naice.yml
Для установки с резервированием с использованием VRRP:
ansible-playbook reservation-naice-services.yml -i inventory/hosts-cluster.yml
Для установки с резервированием без использования VRRP:
ansible-playbook geo-naice-services.yml -i inventory/hosts-geo.yml
Просмотр параметров сертификата
Получение метрик WEB GUI NAICE и WEB портала по параметрам SSL сертификатов
Посмотреть метрики / получить параметры nginx можно командой:
Для веб интерфейса NAICE:
echo | openssl s_client -showcerts -connect <IP-адрес или доменное имя>:443 2>&1 | openssl x509 -noout -dates
Для веб интерфейса портала NAICE:
echo | openssl s_client -showcerts -connect <IP-адрес или доменное имя>:8443 2>&1 | openssl x509 -noout -dates
Nginx реализует метод, возвращающий информацию о SSL-сертификате в виде JSON.
Метод возвращает следующую информацию о сертификате: кем выдан, дата начала действия, дата окончания действия.
Пример вывода:
notBefore=Feb 25 04:32:04 2026 GMT notAfter=Feb 1 04:32:04 2126 GMT
Получение метрик GAVIA, LEMMUS по параметрам SSL сертификатов
Ссылка для получения полной информации о сертификате
Для naice-gavia:
curl -k https://<IP-адрес или доменное имя хоста для NAICE>:8080/actuator/info
Для naice-lemmus:
curl -k https://<IP-адрес или доменное имя хоста для NAICE>:8083/actuator/info
Ссылка для получения информации о сроках действия сертификата
Для naice-gavia:
https://<IP-адрес или доменное имя хоста для NAICE>:8080/actuator/prometheus
Для naice-lemmus:
https://<IP-адрес или доменное имя хоста для NAICE>:8083/actuator/prometheus
Просмотр сертификатов из консоли операционной системы
Для отображения подробной информации о сертификате выполните следующую команду:
# Для сертификата WEB GUI NAICE sudo openssl x509 -in <папка установки NAICE>/https/server.crt -text -noout # Для сертификата WEB портальной авторизации sudo openssl x509 -in <папка установки NAICE>/https/portal.crt -text -noout