Генерация TLS-сертификата
Данная инструкция описывает генерацию самоподписанного TLS-сертификата для nginx в составе AI Server. Сертификат используется для HTTPS-доступа к Центру управления (порт 44392).
Если у вас есть сертификат, выданный удостоверяющим центром (CA), используйте
его вместо самоподписанного. Скопируйте файлы сертификата и ключа в
/app/Primo.AI/Api/volumes/nginx/ssl/ под именами cert1.crt и cert1.rsa и
установите права доступа (шаг 3).
Поддерживаемые ОС
| ОС | Пакет OpenSSL |
|---|---|
| Ubuntu 22.04 | установлен по умолчанию |
| Ubuntu 24.04 | установлен по умолчанию |
| Astra Linux Special Edition 1.7 | установлен по умолчанию |
| Astra Linux Special Edition 1.8 | установлен по умолчанию |
Генерация сертификата
1. Создайте директорию для сертификатов
sudo mkdir -p /app/Primo.AI/Api/volumes/nginx/ssl2. Сгенерируйте самоподписанный сертификат
Команда создаёт сертификат сроком действия 365 дней:
sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /app/Primo.AI/Api/volumes/nginx/ssl/cert1.rsa \
-out /app/Primo.AI/Api/volumes/nginx/ssl/cert1.crt \
-subj "/C=RU/ST=Moscow/L=Moscow/O=Organization/CN=ai-server"Замените значения в параметре -subj на актуальные для вашей организации: -
C – код страны (например, RU) - ST – регион - L – город - O –
название организации - CN – имя хоста или домен сервера AI Server
3. Установите права доступа
nginx в контейнере server_ui работает от непривилегированного пользователя с UID 1000. Без права чтения ключа контейнер не запускается с ошибкой cannot load certificate key "/etc/nginx/cert1.rsa" ... Permission denied. Для команды setfacl нужен пакет acl.
sudo chmod 644 /app/Primo.AI/Api/volumes/nginx/ssl/cert1.crt
sudo chmod 640 /app/Primo.AI/Api/volumes/nginx/ssl/cert1.rsa
sudo setfacl -m u:1000:r /app/Primo.AI/Api/volumes/nginx/ssl/cert1.crt \
/app/Primo.AI/Api/volumes/nginx/ssl/cert1.rsa4. Проверьте сертификат
openssl x509 -in /app/Primo.AI/Api/volumes/nginx/ssl/cert1.crt -noout -text | head -15В выводе должны отобразиться параметры сертификата: срок действия, издатель и субъект.
Продление сертификата
Для продления повторите шаги 2 и 3, затем перезапустите контейнер server_ui:
docker restart server_ui