Смешайте ssl и non-ssl бэкэнды в haproxy с одним интерфейсом - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть хост балансировки нагрузки, хост db и хост keycloak. Ssl-сертификат домена xyz.info находится на балансировщике нагрузки haproxy, сервер keycloak имеет свой собственный ssl-сертификат для субдомена kc.xyz.info, а db-сервер не имеет или не нуждается в своем собственном сертификате.

Я хотел бы завершить ssl-запросы к базе данных и иметь haproxy для обработки аспекта ssl. Однако для сервера keycloak я бы хотел использовать сквозной ssl, и чтобы сервер keycloak обрабатывал свою собственную расшифровку ssl; весь трафик для субдомена kc обрабатывается через acl.

Трафик на БД работает, но я не могу заставить сервер переадресации keycloak работать. Я получаю сообщение об ошибке, в котором говорится, что сертификат предназначен для xyz.info вместо kc.xyz.info, что я и пытаюсь настроить с помощью «mode tcp». Можно ли смешивать на одном экземпляре haproxy как ssl-завершение, так и ssl-прохождение?

То, что я имею до сих пор:

frontend lb
        bind *:80
        bind *:443 ssl crt /etc/letsencrypt/live/xyz.info/xyz.pem
        redirect scheme https if !{ ssl_fc }
        mode http
        acl kc hdr(host) -i kc.xyz.info
        use_backend keycloak if kc
        default_backend db

backend db
        mode http
        option forwardfor
        server db xx.xx.xx.xx:80

backend keycloak
        mode tcp
        option ssl-hello-chk
        server keycloak xx.xx.xx.xx:80
...