HAproxy REQ_SSL_SNI и завершение SSL

HAproxy REQ_SSL_SNI и завершение SSL

Я пытаюсь заставить haproxy работать с REQ_SSL_SNI и терминацией SSL.

Руководства, которым я следовалhttps://www.haproxy.com/blog/enhanced-ssl-load-balancing-with-server-name-indication-sni-tls-extension/ https://stuff-things.net/2016/11/30/haproxy-sni/

Настройка: HA-Proxy версии 1.6.3 Ubuntu 16.04

В журнале генерируется следующее:

HTTP-вход ~ 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

Что я упускаю?

Может ли кто-нибудь указать мне правильное направление?

решение1

Попробуйте использовать ssl_fc_sni:

    acl is_site1 ssl_fc_sni foo.foobar.com
    acl is_site2 ssl_fc_sni foobar.com

По сути, при завершении/расшифровке SSL вам необходимо использовать ssl_fc_sni(получает SNI из API OpenSSL).

При передаче через режим TCP необходимо использовать req_ssl_sni(анализирует SNI в пакете TCP).

Из документов:

ssl_fc_sni : строка

Это извлекает поле расширения TLS (SNI) Server Name Indication из входящего соединения, установленного через транспортный уровень SSL/TLS и локально расшифрованного haproxy. Результат (если присутствует) обычно представляет собой строку, соответствующую имени хоста HTTPS (253 символа или меньше). Библиотека SSL должна быть собрана с включенной поддержкой расширений TLS (проверьте haproxy -vv).

Эта выборка отличается от "req_ssl_sni" выше тем, что она применяется к соединению, расшифровываемому haproxy, а не к содержимому SSL, которое слепо пересылается. См. также "ssl_fc_sni_end" и "ssl_fc_sni_reg" ниже. Для этого требуется, чтобы библиотека SSL была собрана с поддержкой включенных расширений TLS (проверьте haproxy -vv).

Производные ACL:

  • ssl_fc_sni_end : совпадение суффикса
  • ssl_fc_sni_reg : соответствие регулярному выражению

https://cbonte.github.io/haproxy-dconv/2.0/configuration.html#7.3.4-ssl_fc_sni

Связанный контент