Galleon отдаёт HTTPS сам, если в конфигурации указаны сертификат и ключ. Обратный прокси для этого не нужен.
Включение
TLS включает блок server.tls с двумя путями:
server:
tls:
cert_file: /etc/galleon/tls/fullchain.pem
key_file: /etc/galleon/tls/privkey.pemTLS включается, когда заданы оба пути.
Те же значения принимают переменные окружения
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.
Ротация
Сертификат меняется перезапуском:
- Положите новые файлы по тем же путям.
- Перезапустите Galleon; если серверов несколько, перезапустите каждый.
- Убедитесь, что поднялся нужный сертификат: при старте в лог пишется запись
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: клиент не согласовал версию протокола или шифр.
Формат записей описан в разделе Логирование.