Estou tentando fazer com que o haproxy funcione com REQ_SSL_SNI e terminação SSL.
Guias que seguihttps://www.haproxy.com/blog/enhanced-ssl-load-balancing-with-server-name-indication-sni-tls-extension/ https://stuff-things.net/2016/11/30/haproxy-sni/
Configuração: HA-Proxy versão 1.6.3 Ubuntu 16.04
O log gera o seguinte:
Entrada HTTP ~ http-in/NOSRV-1/-1/12 0 SC 0/0/0/0/0 0/0
frontend http-in
bind *:443 ssl crt /etc/haproxy/certs/
log global
reqadd X-Forwarded-Proto:\ https
mode tcp
option tcplog
# wait up to 5 seconds from the time the tcp socket opens
# until the hello packet comes in (otherwise fallthru to the default)
tcp-request inspect-delay 5s
tcp-request content accept if { req.ssl_hello_type 1 }
acl is_site1 req_ssl_sni -i foo.foobar.com
acl is_site2 req_ssl_sni -i foobar.com
use_backend www-foo-foobar if is_site1
use_backend www-foobar if is_site2
backend www-foo-foobar
log global
mode tcp
option tcplog
redirect scheme https if !{ ssl_fc }
server www-1 127.0.0.1:3030 check
backend www-foobar
log global
mode tcp
option tcplog
redirect scheme https if !{ ssl_fc }
server www-1 127.0.0.1:5000 check
o que estou perdendo?
Alguém pode me apontar na direção certa?
Responder1
Tente usar ssl_fc_sni
:
acl is_site1 ssl_fc_sni foo.foobar.com
acl is_site2 ssl_fc_sni foobar.com
Basicamente, ao finalizar/decifrar SSL, você deve usar ssl_fc_sni
(obtém SNI da API OpenSSL).
Ao passar pelo modo TCP, você deve usar req_ssl_sni
(analisa SNI em um pacote TCP).
Dos documentos:
ssl_fc_sni: string
Isso extrai o campo de extensão TLS de indicação de nome de servidor (SNI) de uma conexão de entrada feita por meio de uma camada de transporte SSL/TLS e decifrada localmente por haproxy. O resultado (quando presente) normalmente é uma string que corresponde ao nome do host HTTPS (253 caracteres ou menos). A biblioteca SSL deve ter sido construída com suporte para extensões TLS habilitadas (verifique haproxy -vv).
Essa busca é diferente de "req_ssl_sni" acima porque se aplica à conexão que está sendo decifrada pelo haproxy e não ao conteúdo SSL sendo encaminhado cegamente. Consulte também "ssl_fc_sni_end" e "ssl_fc_sni_reg" abaixo. Isso requer que a biblioteca SSL seja construída com suporte para extensões TLS habilitadas (verifique haproxy -vv).
Derivados de ACL:
- ssl_fc_sni_end: correspondência de sufixo
- ssl_fc_sni_reg: correspondência de regex
https://cbonte.github.io/haproxy-dconv/2.0/configuration.html#7.3.4-ssl_fc_sni