Skip to content
Эта страница создана и переведена с помощью ИИ. Если вы заметили неточности, помогите нам улучшить её. Редактировать на GitHub

Конфигурация 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:

  1. Ответит на ACME HTTP-01 challenge на порту 80
  2. Получит сертификат от Let's Encrypt
  3. Сохранит сертификат в базе данных
  4. Автоматически обновит перед истечением

TIP

Для работы автоматических сертификатов порт 80 должен быть доступен из интернета для валидации ACME HTTP-01 challenge.

Сертификаты вручную

Для сред, где автоматический ACME не подходит, настройте сертификаты вручную:

toml
[http3]
cert_pem = "/etc/prx-waf/tls/cert.pem"
key_pem  = "/etc/prx-waf/tls/key.pem"

Вы также можете загрузить сертификаты через Admin UI:

  1. Перейдите в SSL Certificates в боковой панели
  2. Нажмите Upload Certificate
  3. Укажите цепочку сертификатов (PEM) и приватный ключ (PEM)
  4. Привяжите сертификат к хосту

Или через API:

bash
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:

toml
[proxy]
listen_addr     = "0.0.0.0:80"      # HTTP
listen_addr_tls = "0.0.0.0:443"     # HTTPS

HTTP/3 (QUIC)

PRX-WAF поддерживает HTTP/3 через библиотеку Quinn QUIC. Включите его в конфигурации:

toml
[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-трафика:

yaml
# docker-compose.yml
services:
  prx-waf:
    ports:
      - "80:80"
      - "443:443"
      - "9527:9527"

Для HTTP/3 также пробросьте UDP-порт:

yaml
    ports:
      - "80:80"
      - "443:443/tcp"
      - "443:443/udp"  # HTTP/3 QUIC
      - "9527:9527"

Лучшие практики

  1. Всегда используйте HTTPS в продакшене. HTTP должен только обслуживать ACME challenge и перенаправлять на HTTPS.

  2. Включайте HTTP/3 для клиентов, которые его поддерживают. QUIC обеспечивает более быстрое установление соединения и лучшую производительность в сетях с потерями.

  3. По возможности используйте автоматические сертификаты. Сертификаты Let's Encrypt бесплатны, доверяются всеми браузерами и автоматически обновляются PRX-WAF.

  4. Ограничьте доступ к Admin API. Admin API должен быть доступен только из доверенных сетей:

toml
[security]
admin_ip_allowlist = ["10.0.0.0/8", "172.16.0.0/12"]

Следующие шаги

Released under the Apache-2.0 License.