HAProxy не выполняет поиск SNI
HAProxy v.1.5.18, 1.7.11, прослушивая один IP-адрес с подстановочным 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-аутентификацию. WTF?!
1 ответ
На всякий случай кто-нибудь споткнется. Этот сайт буквально сказал: "Все, что вам нужно сделать, чтобы включить SNI, - это предоставить HAProxy несколько SSL-сертификатов". Таким образом, для включения заголовков SNI во внешнем интерфейсе необходимо иметь несколько файлов PEM с разными сертификатами. Здесь у нас есть один файл PEM с подстановочным сертификатом, поэтому 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