HTTPS, сертификаты и доменное имя¶
Что вы сделаете¶
После этой процедуры пользователи будут открывать ИИ Студию по защищённому адресу, а администратор будет понимать:
- откуда взялся сертификат первого запуска;
- почему браузер сначала показывает предупреждение;
- как безопасно принять это предупреждение для первичной настройки;
- как назначить домен;
- как получить сертификат Let’s Encrypt;
- как установить сертификат организации;
- как работает автоматическая замена сертификата;
- как вернуть локальный сертификат;
- что нужно резервировать.
Инструкция соответствует НайсСофт — ИИ Студии 0.3.66.
Первый вход: почему браузер показывает предупреждение¶
Это нормальное состояние чистой установки¶
До первого входа Студия не знает, какое доменное имя выберет организация.
Но оставлять веб-интерфейс без шифрования нельзя.
Поэтому при чистой установке создаётся локальный TLS-комплект:
Сертификат не содержит IP-адрес ВМ.
Почему IP не добавляется¶
Облачный IP может измениться.
Если долговечный локальный сертификат выпустить на конкретный временный IP, то после смены адреса он станет эксплуатационно неудобным и будет провоцировать постоянные перевыпуски.
Поэтому локальный сертификат предназначен только для:
- шифрования первоначального соединения;
- первичной настройки;
- аварийного локального режима;
- временной административной работы.
Шифрование есть, доверия браузера ещё нет¶
Важно различать:
Первый локальный сертификат создаёт зашифрованное соединение.
Но браузер не знает частный центр NiceSoft Studio Local CA и потому показывает предупреждение.
При доступе по IP он также видит, что сертификат выпущен для nicesoft-ai-studio.local, а не для этого IP.
Это ожидаемо.
Как безопасно добавить исключение¶
Откройте:
Перед продолжением:
- откройте карточку ВМ в Яндекс Облаке;
- скопируйте её текущий адрес;
- сравните его с адресом в строке браузера;
- только после этого откройте дополнительные сведения предупреждения;
- выберите «Продолжить», «Принять риск и продолжить» или аналогичное действие браузера.
Firefox¶
Обычно путь выглядит как:
Chromium / Chrome¶
Обычно:
Точная подпись зависит от версии и политики браузера.
Это временный административный режим
Не превращайте инструкцию «игнорируйте предупреждение сертификата» в постоянное правило для сотрудников. После первичной настройки используйте доверенный сертификат.
Как проверить сертификат через сервер¶
Через SSH:
openssl x509 \
-in data/tls/server.crt \
-noout \
-subject \
-issuer \
-serial \
-dates \
-fingerprint -sha256
Проверьте также локальную цепочку:
Для штатного локального сертификата результат должен подтверждать локальную цепочку доверия.
Что нового в 0.3.61¶
Сертификатами управляет отдельная служба¶
Начиная с 0.3.61 сертификаты вынесены из службы мониторинга в отдельный внутренний контейнер:
Это принцип разделения полномочий.
Служба сертификатов может¶
- проверять домен;
- выпускать Let’s Encrypt;
- хранить состояние Certbot;
- автоматически продлевать публичный сертификат;
- устанавливать сертификат организации;
- выпускать новый локальный сертификат;
- изменять рабочие файлы TLS.
Служба состояния не может¶
- менять закрытый ключ;
- выпускать сертификат;
- заменять TLS-комплект;
- писать в каталоги Let’s Encrypt.
Она только получает безопасную сводку и отображает её администратору.
Почему это важно¶
Компрометация службы мониторинга не должна автоматически давать право переписывать закрытый ключ TLS.
Вкладка «Параметры → Сертификат и домен»¶
Раздел доступен администратору.
Он показывает:
- режим сертификата;
- состояние;
- дату начала действия;
- дату окончания;
- оставшиеся дни;
- издателя;
- владельца;
- серийный номер;
- SHA-256 отпечаток;
- имена из сертификата;
- домен;
- включено ли автоматическое продление;
- загружен ли этот сертификат фактически обратным прокси.
Закрытый ключ в браузер не передаётся.
Вариант 1. Домен + Let’s Encrypt¶
Это самый простой вариант для обычной публичной или доступной из Интернета корпоративной установки.
Перед началом¶
Нужно:
- доменное имя;
- управляемая DNS-зона;
- публичный адрес ВМ;
- входящий TCP/80;
- возможность открыть Студию по её рабочему HTTPS-порту.
Почему нужен порт 80¶
Текущая реализация использует HTTP-01.
На порту 80 NGINX обслуживает только:
Остальные HTTP-запросы получают 404.
То есть открытие порта 80 не превращает всю Студию в HTTP-сайт.
Шаг 1. Закрепите адрес ВМ¶
Если домен будет указывать на публичный IP, используйте стабильный адрес.
После замены ВМ проверьте, что DNS обновлён.
Шаг 2. Создайте A-запись¶
Пример:
Дождитесь фактического разрешения имени из сети, где работает проверка.
Проверить можно:
или:
Шаг 3. Разрешите TCP/80¶
Для автоматического выпуска и последующего продления HTTP-01 должен быть доступен.
Если корпоративная политика запрещает постоянный входящий 80, учтите: текущий автоматический механизм Let’s Encrypt рассчитан именно на HTTP-01. Закрытие порта после выпуска может нарушить следующее автоматическое продление.
Шаг 4. Проверка домена в Студии¶
Откройте:
Параметры → Сертификат и домен.
В блоке проверки:
- укажите домен;
- нажмите «Проверить домен».
Студия:
- проверит корректность имени;
- создаст одноразовый маркер;
- разместит его в каталоге проверки;
- разрешит DNS;
- запросит маркер по
http://<домен>/.well-known/acme-challenge/...; - подтвердит, что этот домен действительно ведёт к данному экземпляру.
Проверка намеренно не пытается «угадать» внешний IP контейнера.
Шаг 5. Выпуск Let’s Encrypt¶
После успешной проверки:
- оставьте/введите домен;
- укажите электронную почту администратора;
- нажмите «Выпустить сертификат».
Служба сертификатов использует Certbot в режиме webroot и запрашивает ECDSA-сертификат.
Полученные файлы устанавливаются в постоянное хранилище TLS.
Шаг 6. Автоматическое применение¶
Замена выполняется безопасно:
новый сертификат
↓
проверка сертификата и ключа
↓
резерв предыдущего комплекта
↓
атомарная замена рабочих файлов
↓
обнаружение изменения NGINX
↓
nginx -t
↓
перечитывание конфигурации только при успешной проверке
Обратный прокси проверяет изменения сертификата примерно каждые несколько секунд и выполняет перечитывание только после успешного nginx -t.
Это позволяет заменить сертификат без ручного перезапуска всего стека.
Шаг 7. Автоматическое продление¶
Служба сертификатов периодически проверяет срок.
Если используется режим Let’s Encrypt и до окончания остаётся 30 дней или меньше, она пытается продлить сертификат через тот же проверенный домен.
Поэтому:
- DNS должен продолжать вести на Студию;
- порт 80 должен оставаться доступным для HTTP-01;
- не удаляйте состояние Let’s Encrypt из
data/letsencrypt.
Вариант 2. Собственный сертификат организации¶
Используйте этот вариант, если сертификат выдаётся:
- внутренним корпоративным УЦ;
- публичным коммерческим УЦ;
- собственной PKI;
- централизованной службой сертификатов организации.
Что подготовить¶
- серверный сертификат в PEM/CRT/CER;
- соответствующий закрытый ключ;
- промежуточную цепочку, если требуется;
- доменное имя.
Установка¶
В Параметры → Сертификат и домен:
- выберите сертификат;
- выберите закрытый ключ;
- при необходимости выберите цепочку;
- укажите домен;
- нажмите «Проверить и установить».
Что проверяет Студия¶
Перед заменой выполняются как минимум:
Срок действия¶
Сертификат должен быть действующим на момент установки.
Соответствие ключа¶
Открытый ключ из сертификата сравнивается с открытой частью загруженного закрытого ключа.
Если они не соответствуют, установка прекращается.
Домен¶
Если домен указан, сертификат должен его покрывать.
Поддерживается также обычная проверка wildcard-имени одного уровня, например:
для:
Резерв предыдущего комплекта¶
До замены предыдущий рабочий сертификат и ключ сохраняются в:
Вариант 3. Вернуться к локальному сертификату¶
Если публичный или корпоративный сертификат нужно убрать, администратор может выбрать:
«Выпустить локальный сертификат».
Студия создаст новый локальный центр и сертификат на 10 лет.
После этого браузеры снова будут показывать предупреждение доверия.
Используйте этот режим:
- для аварийного восстановления;
- в лабораторном стенде;
- до получения корпоративного сертификата;
- в специально настроенном закрытом контуре.
Не используйте его как привычный постоянный режим для большого числа обычных сотрудников, если можно выстроить нормальную цепочку доверия.
Что хранится на диске¶
Основные файлы локального TLS находятся в:
В том числе:
Состояние Let’s Encrypt:
Каталог HTTP-проверки:
Права файлов¶
Локальный закрытый ключ УЦ и серверный закрытый ключ создаются с ограниченными правами.
Не делайте:
и не копируйте ca.key/server.key в общедоступные каталоги.
Что входит в резервную копию¶
Штатная резервная копия 0.3.66 включает:
data/tls;data/letsencrypt;- состояние службы мониторинга;
- остальную критическую конфигурацию Студии.
Это значит, что архив резервной копии содержит чувствительные данные и должен храниться как секрет.
Подробнее: Резервное копирование.
Диагностика¶
Браузер всё ещё показывает старый сертификат¶
Проверьте в Параметры → Сертификат и домен поле фактической загрузки сертификата обратным прокси.
Если новый сертификат установлен, но ещё не активен:
- подождите штатного перечитывания;
- проверьте
nginx -t; - проверьте службу
nicesoft-ai-studio-certificates; - проверьте контейнер proxy;
- убедитесь, что браузер не держит старое соединение или корпоративный TLS-прокси.
Сертификат и ключ не совпадают¶
Студия не установит такой комплект.
Получите правильный закрытый ключ или перевыпустите сертификат.
Не пытайтесь обходить проверку ручной подменой файлов.
Сертификат не покрывает домен¶
Проверьте SAN/CN сертификата.
Пример проверки:
Нужный DNS должен находиться в Subject Alternative Name либо корректно покрываться wildcard-именем.
Проверка домена сообщает, что домен не ведёт на Студию¶
Проверяйте по порядку:
- DNS;
- группу безопасности;
- порт 80;
- NAT/маршрут;
- внешний reverse proxy;
- наличие другого сервера на том же домене;
- корпоративный WAF/CDN.
Let’s Encrypt не может продлить сертификат¶
Проверьте:
- режим сертификата действительно
lets_encrypt; - DNS не изменился;
- порт 80 доступен;
- состояние
data/letsencryptсохранено; - служба сертификатов здорова.
Служба сертификатов недоступна¶
Проверьте:
В Параметры → Система служба отображается как отдельная строка.
Контрольный список после смены сертификата¶
- Студия открывается по ожидаемому адресу.
- В браузере показан новый сертификат.
- Отпечаток совпадает со вкладкой «Сертификат и домен».
- Срок действия правильный.
- Домен входит в SAN.
- Закрытый ключ нигде не показан пользователю.
-
active_in_proxyподтверждает применение. -
./nicesoft.sh healthне показывает ошибку службы сертификатов. - Сделана свежая резервная копия после изменения PKI, если это предусмотрено регламентом.
Что дальше¶
После настройки TLS вернитесь к проверке состояния и убедитесь, что сертификат, модель и все основные службы находятся в рабочем состоянии.