Рейтинг:0

haproxy два приложения на одном порту с разными сертификатами

флаг cn

Я устанавливаю haproxy. Моя конфигурация:

оба приложения
        привязать *:9999
        режим http
        acl prov path_end -i /prov-0.0.1-SNAPSHOT/
        конец веб-пути acl -i /web-0.0.1-SNAPSHOT/
        acl prov1 path_end -i /prov-0.0.1-SNAPSHOT/testAuthenticated.html
        acl web1 path_end -i /web-0.0.1-SNAPSHOT/testAuthenticated.html
        use_backend фокус, если пров
        use_backend фокус, если prov1
        use_backend cnt, если веб
        use_backend cnt, если web1

и он корректно работает без https. Теперь я хотел бы добавить https, но оба приложения должны вызывать haproxy на порту. 8443 (https://localhost:8443/prov-0.0.1-SNAPSHOT и https://локальный:8443/веб-0.0.1-SNAPSHOT) но с разными сертификатами - prov(haproxyPROV.pem), сеть(haproxyWEB.pem). Как я могу настроить его?

Я пытался:

интерфейс https
        привязать *:8443 ssl crt /etc/haproxy/haproxyWEB.pem
        режим http

но здесь я могу иметь только один сертификат на порт

Michael Hampton avatar
флаг cz
Просто используйте один сертификат.
Michu93 avatar
флаг cn
@MichaelHampton, я не могу использовать один сертификат, я знаю, что это было бы легко, но здесь это не тот случай - мне нужны оба сертификата
Michael Hampton avatar
флаг cz
А? Почему у вас два сертификата по одному и тому же предмету? Вы упустили важные детали? Если да, отредактируйте свой вопрос.
Michu93 avatar
флаг cn
@MichaelHampton, клиенты желают, им нужны два сертификата на обратную прокси-съемку для других приложений на tomcat.
Michael Hampton avatar
флаг cz
Нет смысла иметь два сертификата для localhost:8443. Что здесь происходит на самом деле?
Michu93 avatar
флаг cn
@MichaelHampton, в реальной жизни это, конечно, не локальный хост. Есть сервер, который должен принимать как /web, так и /prov на одном порту с разными сертификатами. Это даже выполнимо в haproxy?
Michael Hampton avatar
флаг cz
Нет никакого смысла иметь два сертификата для _любого_ имени, будь то локальный хост или что-то еще. Хапрокси не имеет значения. Невозможно узнать, какой сертификат использовать.
Рейтинг:1
флаг ng

Вы можете использовать более одного сертификата на одном порту:

внешний интерфейс
    bind *:8443 ssl crt /path/to/cert1.pem crt /path/to/cert2.pem

Haproxy использует TLS SNI для сопоставления сертификата с соединением (если SNI отсутствует или найдено несоответствие, то первый сертификат на связывать используется строка (cert1.pem в приведенном выше примере)). Таким образом, для достижения вашей цели вам нужно указать два разных доменных имени на этот хост: порт. Нравиться web.example.com и prov.example.com указывает на один и тот же хост. Вот о чем, я думаю, все эти комментарии.
Примечание: вы используете path_end в ваших ACL, например acl prov path_end -i /prov-0.0.1-SNAPSHOT/, но это также будет соответствовать /foobar/prov-0.0.1-СНИМОК/ и /web-0.0.1-SNAPSHOT/prov-0.0.1-SNAPSHOT/, что может быть или не быть тем, что вы хотите. Как правило дорожка или же path_beg более подходят.

Michu93 avatar
флаг cn
Спасибо, @tbielaszewski! Однако я воспользовался предложением @MichaelHampton и использовал два интерфейса с разными портами, вызывающими один и тот же сервер: haproxyPROV.pem use_backend duo` но это означает, что когда у меня есть только локальный хост, я все равно не могу использовать два сертификата на одном порту, верно?
tbielaszewski avatar
флаг ng
Разные порты или разные имена хостов (SNI). Tertium non datur.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.