​Общее описание

Для обеспечения безопасного взаимодействия между администратором и системой NAICE реализована защита пользовательских интерфейсов: lemmus, gavialarus, castor и sterna. HTTP-трафик полностью зашифрован с использованием протокола TLS, что предотвращает перехват данных и несанкционированный доступ. 

Во время установки сервисов NAICE для пользовательских интерфейсов автоматически выполняется генерация двух самоподписанных сертификата, что позволяет обеспечить защищённое взаимодействие через HTTPS на основе параметров, указанных в конфигурации. Подробнее про установку сервисов NAICE здесь.

Генерируются различные сертификаты для двух групп сервисов:

  1. Административные сервисы:
  2. Портальные сервисы:

При наличии стороннего центра сертификации (ЦС) предусмотрена возможность заменить самоподписанные сертификаты на выпущенные сторонним ЦС. 

Установка сертификата, выпущенного сторонним ЦС

При установке NAICE через OVA-образ замена выполняется по инструкции v1.1_3.2.6 Замена портальных/WEB сертификатов.

Требования к сертификату

Сертификат должен соответствовать всем нижеуказанным требованиям для обеспечения корректной работы с сервисом NAICE:

  1. Сертификат должен быть в формате PEM или CRT. Использование сертификатов в формате DER или контейнеров PKCS не поддерживается.
  2. Ключ сертификата должен шифроваться с использованием шифрования AES или не использовать защиту шифрованием.
  3. Сертификат и приватный ключ должны быть отдельными файлами.
  4. В пароле не допускается использование символов: $, ', ", `, скобок и пробелов.
  5. Сертификат  должен содержать атрибуты:
    1. Subject: CN;
    2. X509v3 Key Usage: Digital Signature, Key Encipherment (обязательно critical);
    3. X509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication;
    4. X509v3 Subject Alternative Name: должен включать DNS-имя, соответствующее DNS имени сервера или IP Address, соответствующий адресу сервера;
    5. В случае, если NAICE используется в схеме резервирования без VRRP, атрибут X509v3 Subject Alternative Name должен включать DNS-имя или IP Address каждого сервера с NAICE.


Предварительная подготовка перед заменой сертификата

Замена самоподписанного сертификата на собственный заверенный сертификат становится возможной после завершения установки NAC-системы NAICE на целевом хосте.


Для замены сертификата на собственный необходимо указать соответствующие значения переменных в файле group_vars/all.yml.

Файлы сертификата должны быть размещены на хосте, с которого осуществляется запуск плейбука.

Описание параметров, которые необходимо настроить перед заменой сертификата:

Переменная

Описание

cert_path

Директория, в которую будет помещен сертификат на целевом хосте, указывается относительно директории установки NAICE в переменной naice_address. Изменение данной переменной не рекомендуется!
server_domainDNS-имя или IP-адрес сервера NAICE
cert_name

Признак. указывающий какой сертификат требуется заменить: WEB GUI NAICE ("server") или WEB портальной авторизации ("portal"). Можно заменить только один сертификат за одно выполнение плейбука!

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 - плейбук не будет выполнен, возникнет ошибка.

TASK [https : Check that host is resolvable] **************************************************************************************************************************************************
fatal: [common_host]: FAILED! => {
    "assertion": "server_domain is ansible.utils.resolvable",
    "changed": false,
    "evaluated_to": false,
    "msg": "Host naice3.test.loc is not resolvable"
}



Во время выполнения плейбука для замены сертификата потребуется дважды подтвердить согласие на перезапуск системы 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-адреса нод.

  1. На обоих нодах требуется использовать один и тот же сертификат NAICE.
  2. Замена выполняется последовательно на первой и второй ноде NAICE.
  3. Адрес ноды, на которой будет выполняться замена сертификата требуется указывать в файле inventory/hosts.yml.

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

Перед запуском плейбука внимательно ознакомьтесь с разделом Предварительная подготовка перед заменой сертификата и замена на собственный сертификат

  1. Определить, какая из нод с NAICE является VRRP master, а какая VRRP backup
  2. Указать в файле inventory/hosts.yml адрес VRRP master
  3. Выполнить плейбук https-replacement-cert.yml на VRRP master

  4. Проверить доступность NAICE по домену, указанному в сертификате.

  5. Указать в файле inventory/hosts.yml адрес VRRP backup
  6. Выполнить плейбук https-replacement-cert.yml на  VRRP backup

  7. Перевести VRRP мастерство на вторую ноду (VRRP backup). Для этого на хосте, где находиться VIP адрес необходимо выполнить команду:
    sudo systemctl restart keepalived

  8. Повторно проверить доступность NAICE по домену, указанному в сертификате.
  9. Вернуть VRRP мастерство обратно.

Замена сертификатов в схеме с резервированием без использования VRRP

В данной схеме каждый хост будет иметь свое доменное имя. Это потребует, что бы каждое из данных имён было прописано в сертификате в атрибуте X509v3 Subject Alternative Name. Каждое из данных доменных имён должно разрешаться DNS сервером, указанным на виртуальных машинах предназначенных для установки NAICE и рабочих местах администраторов.

  1. На обоих нодах требуется использовать один и тот же сертификат NAICE.
  2. Замена выполняется последовательно на первой и второй ноде NAICE.
  3. Адрес ноды, на которой будет выполняться замена сертификата требуется указывать в файле inventory/hosts.yml.
  4. В переменной server_domain файла group_vars/all.yml необходимо указать доменное имя виртуальной машины с NAICE, на которой будет выполняться замена сертификата.

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

Перед запуском плейбука внимательно ознакомьтесь с разделом Предварительная подготовка перед заменой сертификата и замена на собственный сертификат

  1. Указать в файле inventory/hosts.yml адрес первой ноды
  2. Указать в файле group_vars/all.yml в переменной server_domain доменное имя первой ноды
  3. Выполнить плейбук https-replacement-cert.yml для первой ноды

  4. Проверить доступность NAICE по доменному имени первой ноды

  5. Указать в файле inventory/hosts.yml адрес второй ноды
  6. Указать в файле group_vars/all.yml в переменной server_domain доменное имя второй ноды
  7. Выполнить плейбук https-replacement-cert.yml для второй ноды

  8. Проверить доступность 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


{"certificationInfo":"[\n[\n  Version: V3\n  Subject: CN=naice.eltex.loc\n  Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11\n\n  Key:  Sun RSA public key, 2048 bits\n  params: null\n  modulus: 20486967698613267930909072363030876768829382668037653959787293720836693037928105253241476741132543189024216394802025956688056563424715596228948534991165300263386817165467478160825626126485740592732390380827272721590133814642584953058405940822026985924893382111244494224675400688570979828213773583419015857751195999453517367776747967524791333248346299091289472585316995257682843651922067607138984537621206898106292347585416976597088550184844009552218272531760031782701234470695835451229760735228708466934677559090711246811340726563284325073340020794600896874630686783268793254419061795884880349881938140092553567913571\n  public exponent: 65537\n  Validity: [From: Wed Feb 25 04:31:57 UTC 2026,\n               To: Fri Feb 01 04:31:57 UTC 2126]\n  Issuer: CN=naice.eltex.loc\n  SerialNumber: 6b:91:5f:9f:fd:8a:aa:af:d1:49:ad:9d:5a:d3:5e:2f:f8:68:a0:dc\n\nCertificate Extensions: 4\n[1]: ObjectId: 2.5.29.37 Criticality=false\nExtendedKeyUsages [\n  serverAuth\n  clientAuth\n]\n\n[2]: ObjectId: 2.5.29.15 Criticality=true\nKeyUsage [\n  DigitalSignature\n  Non_repudiation\n  Key_Encipherment\n  Key_Agreement\n  Key_CertSign\n]\n\n[3]: ObjectId: 2.5.29.17 Criticality=false\nSubjectAlternativeName [\n  IPAddress: 100.110.3.35\n]\n\n[4]: ObjectId: 2.5.29.14 Criticality=false\nSubjectKeyIdentifier [\nKeyIdentifier [\n0000: D2 9A 06 D5 1F 13 45 D1   68 C3 EB 3C 08 26 DB 5C  ......E.h..<.&.\\\n0010: FE E5 92 00                                        ....\n]\n]\n\n]\n  Algorithm: [SHA256withRSA]\n  Signature:\n0000: 7F 27 56 8D 5F E5 98 59   1A 82 0B 43 BB 24 19 AA  .'V._..Y...C.$..\n0010: 8B A0 19 2E B2 12 63 6C   2B 2D B1 19 11 61 B4 58  ......cl+-...a.X\n0020: B7 10 91 F8 A5 60 54 98   0C D5 D9 88 2C 3F 53 C6  .....`T.....,?S.\n0030: 40 75 EC 49 CC 05 13 25   70 A2 43 55 67 86 D5 E7  @u.I...%p.CUg...\n0040: E6 60 50 CD 4F 1B 79 DB   9C 33 E1 BE 18 77 68 65  .`P.O.y..3...whe\n0050: FD 58 5B 6C BA 5C FA DB   4E 12 3B B4 1E 29 75 2A  .X[l.\\..N.;..)u*\n0060: 72 BD 4F DA 7D 99 3F 7B   D4 33 4C C8 10 EB 4E F2  r.O...?..3L...N.\n0070: 90 5A 57 BD 39 C3 D5 DA   DF 18 A2 6C 86 45 3E 0C  .ZW.9......l.E>.\n0080: 0A C7 E7 EF 88 16 E1 8F   DF 81 0D 92 45 9A 46 7A  ............E.Fz\n0090: 61 D3 0B A0 5E DA 7F F6   EF 35 5B E1 4F 91 D8 02  a...^....5[.O...\n00A0: 75 0A 99 52 5F 2F 24 A0   0C 7A 44 77 4E 4A F4 31  u..R_/$..zDwNJ.1\n00B0: D1 F9 35 BC BD A3 DF 08   71 16 AC 32 D4 F6 BF EE  ..5.....q..2....\n00C0: 9F B5 25 58 64 08 BA D5   79 3C B7 77 E4 25 9B 92  ..%Xd...y<.w.%..\n00D0: 51 A6 38 21 F6 09 BA B1   20 C8 E1 69 9E 04 44 B6  Q.8!.... ..i..D.\n00E0: 43 A3 A9 99 63 72 53 B1   F9 36 9F E5 35 5E F8 02  C...crS..6..5^..\n00F0: F1 F5 6B 16 40 FA F3 73   68 48 7E 47 97 B8 92 D4  ..k.@..shH.G....\n\n]"}

Ссылка для получения информации о сроках действия сертификата

Для naice-gavia:

https://<IP-адрес или доменное имя хоста для NAICE>:8080/actuator/prometheus

Для naice-lemmus:

https://<IP-адрес или доменное имя хоста для NAICE>:8083/actuator/prometheus


# HELP cert_valid_from The start date of the validity period in milliseconds
# TYPE cert_valid_from gauge
cert_valid_from{application="lemmus"} 1.771993917E12
# HELP cert_valid_to The end date of the validity period in milliseconds
# TYPE cert_valid_to gauge
cert_valid_to{application="lemmus"} 4.925593917E12
Полученные метрик cert_valid_from и cert_valid_to соответствуют датам начала и окончания действия сертификата в миллисекундах.



Для проверки дат можно использовать следующие команды в терминале:

          Конвертация значения в целое число:

printf "%9.0f\n" <значение cert_valid_from или значение cert_valid_to>


4925593917000

          Конвертация полученного целого числа в дату:

date -d@<полученное_целое_число>


Wed Nov 10 03:30:00 AM +07 158055

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

Просмотр сертификатов из консоли операционной системы

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

# Для сертификата WEB GUI NAICE
sudo openssl x509 -in <папка установки NAICE>/https/server.crt -text -noout

# Для сертификата WEB портальной авторизации
sudo openssl x509 -in <папка установки NAICE>/https/portal.crt -text -noout