Galleon отдаёт HTTPS сам, если в конфигурации указаны сертификат и ключ. Обратный прокси для этого не нужен.

Включение

TLS включает блок server.tls с двумя путями:

server:
  tls:
    cert_file: /etc/galleon/tls/fullchain.pem
    key_file: /etc/galleon/tls/privkey.pem

TLS включается, когда заданы оба пути. Те же значения принимают переменные окружения GALLEON_SERVER_TLS_CERT_FILE и GALLEON_SERVER_TLS_KEY_FILE.

Требования к файлам:

  • сертификат в формате PEM. Внутри файла сначала идёт сертификат сервера, затем промежуточные сертификаты удостоверяющего центра; ACME-клиенты и cert-manager называют такой файл fullchain;
  • ключ в формате PEM. Ключи с парольной фразой и ключи в формате OpenSSH не принимаются;
  • алгоритм ключа — RSA, ECDSA или Ed25519.

После включения Galleon сообщает клиентам адреса по схеме https. Если инстанс доступен под другим именем, задайте его в server.public_base_url.

Ошибки в настройках

Сервер не стартует, если:

  • задан только один из двух путей;
  • файл не читается или содержит не тот формат;
  • ключ защищён парольной фразой;
  • внутри server.tls встретился неизвестный ключ;
  • блок tls оказался вне server.

Ротация

Сертификат меняется перезапуском:

  1. Положите новые файлы по тем же путям.
  2. Перезапустите Galleon; если серверов несколько, перезапустите каждый.
  3. Убедитесь, что поднялся нужный сертификат: при старте в лог пишется запись tls: server certificate loaded с полем sha256.

Параметры протокола

Принимаются соединения по TLS 1.2 и новее. Наборы шифров:

  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256;
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256;
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384;
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384;
  • TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256;
  • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256;
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256;
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256.

В TLS 1.3 наборы шифров определяет сам протокол.

Ответы по TLS получают заголовок Strict-Transport-Security со сроком в один год и с includeSubDomains. Если позже вернуть инстанс на HTTP, браузеры, уже заходившие по HTTPS, откроют веб-интерфейс только после сброса состояния HSTS.

Диагностика

Неудачные рукопожатия TLS пишутся в лог на уровне warn с источником server.http: клиент не согласовал версию протокола или шифр. Формат записей описан в разделе Логирование.