
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.com
ser ACL para usar ao redirecionar para um determinado back-end. Minha melhor tentativa foi consultar req_ssl_sni -m found
e 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