HAProxy не выполняет поиск SNI

HAProxy не выполняет поиск SNI

HAProxy v.1.5.18, 1.7.11, прослушивание одного IP-адреса с wildcard SSL-сертификатом, мне нужно указать несколько бэкендов с поиском SNI. Есть куча конфигурационных файлов, которые все говорят, req_ssl_sni -i hostname.example.comчто ACL нужно использовать при перенаправлении на определенный бэкенд. Моя лучшая попытка была запросить req_ssl_sni -m foundи выяснить, что SNI недоступен во фронтенде. Как заставить работать поиск SNI с одним сертификатом HTTPS?

Требуется следующий haproxy.cfg:

frontend https
    bind *:443 ssl interface eth1 crt /etc/haproxy/allstar.company.com.pem
    tcp-request inspect-delay 5s
    tcp-request content accept if { req.ssl_hello_type 1 }
    acl to_webcam req.ssl_sni -i webcam.company.com
    acl to_jira req.ssl_sni -i jira.company.com
    use_backend webcam if to_webcam
    use_backend jira if to_jira
    default_backend no_sni

backend webcam
    acl webcam_auth (hidden)
    http-request auth realm webcam if !webcam_auth
    server ws01 10.x.x.x:8080

backend no_sni
    acl webcam_auth2 (hidden)
    http-request auth realm webcam-no-sni if !webcam_auth2
    server ws01 10.x.x.x:8080

backend drop403
    http-request deny

backend jira
    server jira-test 10.x.x.y:8080

Глобальные и дефолтные настройки не изменяются. С этой конфигурацией единственный бэкенд, который я затрагиваю, это no-sni, который запрашивает HTTP-аутентификацию. Какого хрена?!

решение1

На всякий случай, если кто-то споткнется.Этот сайтдословно сказано: "Все, что вам нужно сделать, чтобы включить SNI, это предоставить HAProxy несколько SSL-сертификатов". Таким образом, для того, чтобы включить заголовки SNI во внешнем интерфейсе, нужно иметь несколько PEM-файлов сдругойсертификаты. У нас здесь есть один файл PEM с wildcard-сертификатом, поэтому SNI оказывается отключенным в haproxy. Поэтому фильтрация и перенаправление ACL должны выполняться через hdr(host)ACL, как будто ваш бэкэнд — это обычный HTTP.

acl to_webcam hdr(host) -i webcam.company.com
acl to_jira hdr(host) -i jira.company.com
use_backend webcam if to_webcam
use_backend jira if to_jira

Связанный контент