HAProxy não realiza pesquisa SNI

HAProxy não realiza pesquisa SNI

HAProxy v.1.5.18, 1.7.11, escutando em um único endereço IP com um certificado SSL curinga, preciso especificar vários back-ends com pesquisa SNI. Há uma tonelada de arquivos de configuração que dizem req_ssl_sni -i hostname.example.comser ACL para usar ao redirecionar para um determinado back-end. Minha melhor tentativa foi consultar req_ssl_sni -m founde descobrir que o SNI está inacessível no frontend. Como fazer a pesquisa SNI funcionar com um único certificado HTTPS?

haproxy.cfg necessário é o seguinte:

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

Global e padrões permanecem inalterados. Com esta configuração, o único backend que estou acessando é o no-sni que pede autenticação HTTP. O que é isso?!

Responder1

Apenas no caso de alguém tropeçar.Esse sitedisse literalmente: "Tudo o que você precisa fazer para ativar o SNI é fornecer ao HAProxy vários certificados SSL". Assim, para ter os cabeçalhos SNI habilitados no frontend é necessário ter vários arquivos PEM comdiferentecertificados. Temos aqui um único arquivo PEM com um certificado curinga, então o SNI acaba desabilitado no haproxy. Portanto, a filtragem e o redirecionamento de ACL devem ser feitos via hdr(host)ACLs, como se seu backend fosse HTTP simples.

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

informação relacionada