Конфигурация SSL/TLS
PRX-WAF поддерживает автоматическое управление TLS-сертификатами через Let's Encrypt (ACME v2), ручную конфигурацию сертификатов и HTTP/3 через QUIC. На этой странице описана вся конфигурация, связанная с HTTPS.
Автоматические сертификаты (Let's Encrypt)
PRX-WAF использует библиотеку instant-acme для автоматического получения и обновления TLS-сертификатов от Let's Encrypt. Когда хост настроен с включённым SSL, PRX-WAF:
- Ответит на ACME HTTP-01 challenge на порту 80
- Получит сертификат от Let's Encrypt
- Сохранит сертификат в базе данных
- Автоматически обновит перед истечением
TIP
Для работы автоматических сертификатов порт 80 должен быть доступен из интернета для валидации ACME HTTP-01 challenge.
Сертификаты вручную
Для сред, где автоматический ACME не подходит, настройте сертификаты вручную:
[http3]
cert_pem = "/etc/prx-waf/tls/cert.pem"
key_pem = "/etc/prx-waf/tls/key.pem"Вы также можете загрузить сертификаты через Admin UI:
- Перейдите в SSL Certificates в боковой панели
- Нажмите Upload Certificate
- Укажите цепочку сертификатов (PEM) и приватный ключ (PEM)
- Привяжите сертификат к хосту
Или через API:
curl -X POST http://localhost:9527/api/certificates \
-H "Authorization: Bearer $TOKEN" \
-F "cert=@/path/to/cert.pem" \
-F "key=@/path/to/key.pem" \
-F "host=example.com"Прослушиватель TLS
PRX-WAF прослушивает HTTPS-трафик на настроенном адресе TLS:
[proxy]
listen_addr = "0.0.0.0:80" # HTTP
listen_addr_tls = "0.0.0.0:443" # HTTPSHTTP/3 (QUIC)
PRX-WAF поддерживает HTTP/3 через библиотеку Quinn QUIC. Включите его в конфигурации:
[http3]
enabled = true
listen_addr = "0.0.0.0:443"
cert_pem = "/etc/prx-waf/tls/cert.pem"
key_pem = "/etc/prx-waf/tls/key.pem"WARNING
HTTP/3 требует действующего TLS-сертификата. Пути к сертификату и ключу должны быть указаны при включении HTTP/3. Автоматические сертификаты Let's Encrypt также поддерживаются для HTTP/3.
HTTP/3 работает через UDP на том же порту, что и HTTPS (443). Клиенты, поддерживающие QUIC, будут автоматически обновляться, а остальные откатятся до HTTP/2 или HTTP/1.1 через TCP.
Перенаправление HTTPS
Для перенаправления всего HTTP-трафика на HTTPS настройте хосты как на порту 80 (HTTP), так и на порту 443 (HTTPS). PRX-WAF автоматически перенаправляет HTTP-запросы на их HTTPS-эквиваленты при настроенном SSL для хоста.
Хранение сертификатов
Все сертификаты (автоматические и ручные) хранятся в базе данных PostgreSQL. Таблица certificates (миграция 0003) содержит:
- Цепочку сертификатов (PEM)
- Приватный ключ (зашифрован AES-256-GCM)
- Доменное имя
- Дату истечения
- Информацию об аккаунте ACME (для автоматического обновления)
INFO
Приватные ключи зашифрованы в покое с использованием AES-256-GCM. Ключ шифрования получается из конфигурации. Никогда не храните незашифрованные приватные ключи в базе данных.
Docker с HTTPS
При работе в Docker, пробросьте порт 443 для TLS-трафика:
# docker-compose.yml
services:
prx-waf:
ports:
- "80:80"
- "443:443"
- "9527:9527"Для HTTP/3 также пробросьте UDP-порт:
ports:
- "80:80"
- "443:443/tcp"
- "443:443/udp" # HTTP/3 QUIC
- "9527:9527"Лучшие практики
Всегда используйте HTTPS в продакшене. HTTP должен только обслуживать ACME challenge и перенаправлять на HTTPS.
Включайте HTTP/3 для клиентов, которые его поддерживают. QUIC обеспечивает более быстрое установление соединения и лучшую производительность в сетях с потерями.
По возможности используйте автоматические сертификаты. Сертификаты Let's Encrypt бесплатны, доверяются всеми браузерами и автоматически обновляются PRX-WAF.
Ограничьте доступ к Admin API. Admin API должен быть доступен только из доверенных сетей:
[security]
admin_ip_allowlist = ["10.0.0.0/8", "172.16.0.0/12"]Следующие шаги
- Reverse Proxy — маршрутизация бэкендов и конфигурация хостов
- Обзор шлюза — кеширование ответов и туннели
- Кластерный режим — многоузловой TLS с mTLS-сертификатами