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?!

0
задан 14 September 2018 в 12:59
1 ответ

На всякий случай кто-нибудь споткнется. На этом сайте сказано буквально: «Все, что вам нужно сделать для включения SNI, - это предоставить HAProxy несколько сертификатов SSL». Таким образом, для включения заголовков SNI во внешнем интерфейсе необходимо иметь несколько файлов PEM с разными сертификатами. У нас есть один файл PEM с подстановочным сертификатом, поэтому SNI в итоге отключается в haproxy. Следовательно, фильтрация и перенаправление ACL должны выполняться через ACL hdr (host) , как если бы ваш бэкэнд был простым 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
0
ответ дан 5 December 2019 в 05:17

Теги

Похожие вопросы