Перейти к основному контенту

TLS и каналы связи

Назначение

Клавдий использует TLS для всех каналов: веб-интерфейс, серверы IMAP и SMTP, внутрикластерный трафик между узлом и сервером хранилища, поиск (Solr). Сертификаты хранятся централизованно в зашифрованном виде в базе и применяются всеми ролями на узле — без раздельных файлов на диске.

Загрузка и замена сертификата через веб-интерфейс — см. {{ССЫЛКА:install.tls-web|Установка → Общие настройки → TLS-сертификат}}. Здесь — технические детали.

Источник сертификата

Сертификат выбирается в следующем приоритете:

  1. Хранилище в базе (config.tls_certificates, is_active=true) — приоритетнее. Загружается через веб-интерфейс. Расшифровывается (AES-256-GCM) и пишется во временный PEM-файл.
  2. Переменная окружения KLVD_WEB_SSL_CERT (путь к PEM-файлу, сертификат и ключ в одном файле) — резерв, если в базе сертификата нет.
  3. Отсутствие — только HTTP, без HTTPS. Не рекомендуется для рабочей эксплуатации.

При смене активного сертификата в базе фоновыйая pollerзадача tls.cert.watch (раз в 60 секунд) обсравнаруживает расхождение отпечаток сертификата и при изменении перезапускает слушатели (веб-интерфейса, IMAP, SMTP,SMTP и хранилище)а без перезапуска узла.

Веб-интерфейс

  • Порт: KLVD_WEB_LISTEN_PORT (по умолчанию 8001). При наличии сертификата пслужба рабоднимтается по HTTPS.
  • Сертификат: из базы или KLVD_WEB_SSL_CERT.
  • Принудительный HTTPS: KLVD_WEB_FORCE_SSL=1 — узел остановится с ошибкой при отсутствии сертификата (защита от случайного HTTP в рабочей эксплуатации).

IMAP и SMTP

Внутрикластерный трафик хранилища (порт 8444)

Узел обращается к серверу хранилища (роль storage, порт KLVD_STORAGE_LISTEN_PORT, по умолчанию 8444) для чтения и записи чанков писем. Этот трафик тоже шифруется TLS — переиспользуется тот же активный сертификат из базы (тег storage).

Как это работает

  • Сервер хранилища (роль storage): при запустартке загрузижает сертификат из базы →и поднимвключает HTTPS на порту 8444. Путь к PEMPEM-файлу публикусохраняется в контексте узла.
  • URL узла хранилища регистрируется в config.storages.url со схемой https://, (если сертификат есть) — клнастроерная видимость. Внешний URLадрес можно переопределяеитсяь через KLVD_STORAGE_EXTERNAL_URL.
  • Клиент (на любойм узле): загрузижает сертификат из базы как CA для проверкиф соедикнения и передации,ёт настраиего вает curl.

Проверка сертификата — по умолчанию отключена

KLVD_STORAGE_SSL_VERIFY (по умолчанию 0):

Значение Поведение
0 (по умолчанию) Проверка сертификата отключена. Self-signed(!)Самоподписанный сертификат принимается безусл провнерки цепочки доверия. ПоРежим предходитназначен для трафика между доверенными узлами Клавдия (сертификат загружен из общей базы, узлы аутентифицированы кластерной инфраструктурой).
1 Строгая проверка: сертификат должен быть подписан доверенным центром сертификации, а имя или SAN должны— соотвпадетствовать с адресу пом. Требует настоящего сертифидката с корректным имлюченемия.

Почему по умолчанию строгая провыерка отключена, по:скольку в типичновой инусталляцииновке узлы взаимодействуют внутри доверёенной сети. Си используют общий самоподписанный сертификат — self-signed(!), загружается из общей базы (узлы уже доверяют друг другу через базу). ВкДлючениея строгой проверки требуется сертификата от доверенного центра с именем, соотвпадаетствующим с KLVD_STORAGE_EXTERNAL_URL — это дополнительная инфраструктурная работа, не нужная для большинства развёртываний. При вобменешних с узлахми храненилищая через публичную сеть —строгую проверку рекомендуется включить.

Переменные окружения (TLS хранилища)

Переменная По умолчанию Назначение
KLVD_STORAGE_SSL_CERT (пусто) Путь к PEM-файлу (резерв, если в базе сертификата нет). При наличии → HTTPS.
KLVD_STORAGE_FORCE_SSL (пусто) 1 → остановка при отсутствии сертификата (защита от случайного HTTP).
KLVD_STORAGE_SSL_VERIFY 0 1 → включить проверку сертификата (нужен сертификат от доверенного центра).
KLVD_STORAGE_LISTEN_PORT 8444 Порт сервера хранилища.
KLVD_STORAGE_EXTERNAL_URL (пусто) Внешний URL хранилища (если за обратным прокси или на другом хосте). Формат: http(s)://IP:порт.

Поиск (Solr)

При локальном Solr контейнер klvd-solr принимолучает тот же сертификат (через секрет Docker secret) и поднимвключает HTTPS на порту 8983. Entrypoint(!)Скрипт запуска преонвебртиразует PEM в формат PKCS12 и настраивает Jetty. При внешнем Solr — HTTPS зависит от настройкиДля внешнего Solr;Solr использование HTTPS определяется его собственной конфигурацией; адрес укзазывдаеётся в KLVD_SOLR_URL.

Проверка сертификата Solr по умолчанию отключена (KLVD_SOLR_SSL_VERIFY=0), self-signed(!))поэтому самоподписанный сертификат принимается. Для внешнего Solr с доверенастоящиным сертификатом —задайте KLVD_SOLR_SSL_VERIFY=1 и KLVD_SOLR_CA_PATH (с путьём к CA).CA.

Ротация сертификата

  1. Загрузите новый сертификат в веб-интерфейсе ([Общие настройки → TLS-сертификат → Загрузить]). Старый помечается как неактивный.
  2. PollerФоновая задача tls.cert.watch (в течение 60 секунд) обнаруживает смену отпечатка →и выстпередавляеёт фменеджеру ролей комагнду → role-managerна перезапускает слушателией (веб-интерфейса, IMAP, SMTP,SMTP и хранилище) на новом сертификате.
  3. URL узла хранилища в config.storages.url обновиляется при следующем heartbeat.сигнале активности (heartbeat).
  4. СТа же фоновая задача обновляет сертификат Solr обновляется в /shared/solr-tls.pem тем же poller;. Solr применит его при следующем перезапуске (docker compose restart klvd-solr).

Ротация сертификата не требует перезапуска узла — слушатели перезапускаются автоматически. Веб-интерфейс кратко (около секунды) недоступен в момент перезапуска.

Самоподписанный сертификат

При установке генерируесоздаётся самоподписанный сертификат (CN=klvd-wui)., Бпоэтому браузер показывает предупреждените о нёедоверенном — на псервотификате время это нормально. Для рабочей эксплуатации замените на настегоящий сертификатом от доверенного центра (зсертификагрузцитеи через веб-интерфейс). Самоподписанный сертификат без SAN не пройходёит строгую проверку имени —, поэтому внутрикластерная проверка сертификата по умолчанию отключена.

См. также

Навигация по книге