Estoy intentando que haproxy funcione con REQ_SSL_SNI y terminación SSL.
Guías que he seguidohttps://www.haproxy.com/blog/enhanced-ssl-load-balancing-with-server-name-indication-sni-tls-extension/ https://stuff-things.net/2016/11/30/haproxy-sni/
Configuración: HA-Proxy versión 1.6.3 Ubuntu 16.04
El registro genera lo siguiente:
Entrada HTTP ~ entrada http/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
¿Qué me estoy perdiendo?
¿Alguien me puede apuntar en la dirección correcta?
Respuesta1
Intenta usar ssl_fc_sni
:
acl is_site1 ssl_fc_sni foo.foobar.com
acl is_site2 ssl_fc_sni foobar.com
Básicamente, al terminar/descifrar SSL, debe usar ssl_fc_sni
(obtiene SNI de la API de OpenSSL).
Al pasarlo a través del modo TCP, debe usar req_ssl_sni
(analiza SNI en un paquete TCP).
De los documentos:
ssl_fc_sni: cadena
Esto extrae el campo de extensión TLS de indicación del nombre del servidor (SNI) de una conexión entrante realizada a través de una capa de transporte SSL/TLS y descifrada localmente por haproxy. El resultado (cuando está presente) normalmente es una cadena que coincide con el nombre de host HTTPS (253 caracteres o menos). La biblioteca SSL debe haberse creado con soporte para extensiones TLS habilitadas (verifique haproxy -vv).
Esta recuperación es diferente de "req_ssl_sni" anterior en que se aplica a la conexión que se descifra mediante haproxy y no al contenido SSL que se reenvía ciegamente. Consulte también "ssl_fc_sni_end" y "ssl_fc_sni_reg" a continuación. Esto requiere que la biblioteca SSL esté compilada con soporte para extensiones TLS habilitadas (verifique haproxy -vv).
Derivados de ACL:
- ssl_fc_sni_end: coincidencia de sufijo
- ssl_fc_sni_reg: coincidencia de expresiones regulares
https://cbonte.github.io/haproxy-dconv/2.0/configuration.html#7.3.4-ssl_fc_sni