Рейтинг:0

Устранение неполадок LDAPS/TLS/HAproxy, использование неправильного сертификата SSL

флаг jp

Итак, у меня есть два сервера... один старый (Ubuntu 16) и один новый (Ubuntu 20).

У них обоих есть Haproxy, и в конфигурации они привязаны к одному и тому же порту и одному и тому же сертификату .PEM. Когда я тестирую сертификат SSL, используя s_client OpenSSL с хоста Windows... Я вижу ожидаемый сертификат при тестировании старого сервера... но новый сервер по какой-то причине отправляет сертификат внутреннего сервера, который является внутренним сертификатом.

Итак, чтобы помочь нарисовать картину, старый сервер отправляет ldaps.domain.comинформация о сертификате. Но новый сервер отправляет внутреннийDC.domain.comсертификат.

На обоих серверах Haproxy разрешен протокол TCP/636 из DMZ в локальную сеть, они оба используют одни и те же внутренние серверы, поэтому я совершенно озадачен.

Любой совет будет супер оценен!

Ginnungagap avatar
флаг gu
Используете ли вы `-servername` при тестировании с `s_client`? Зависят ли сертификаты от SNI в HAProxy?
флаг jp
Да, я использовал строку cmd: `openssl s_client -connect ldaps.domain.com:636` для обоих тестов... переключение IP-адресов серверов в файле Hosts. Насколько я знаю, Haproxy следит за доменом, поскольку это все, что указано в его конфигурации.
Ginnungagap avatar
флаг gu
Вы не используете `-servername`, имя, указанное OpenSSL при выполнении рукопожатия TLS, так как вы подключаетесь к IP-адресу, который разрешает ldaps.domain.com без SNI.
флаг jp
Я ошибаюсь.. SNI это да?: https://stuff-things.net/2016/11/30/haproxy-sni/. Если так, то нет. Я не использую его. мой конфиг проще: клиент LDAPS -> haproxy -> серверный DC/LDAPS поэтому ldaps.domain.com для внешнего интерфейса, а внутренний — это пара контроллеров домена. И передний, и внутренний настроены на порт 636.
Ginnungagap avatar
флаг gu
Покажите свою конфигурацию HAProxy, если это не SNI, то неправильно настроено завершение TLS.
флаг jp
Вот очищенный файл конфигурации: https://paste.centos.org/view/52a6000b Итак, моя проблема заключается в том, что при подключении к ldaps.domain1.com с использованием этого нового сервера вместо этого я получаю сертификат SSL для domain1-dc01.
флаг jp
Прошло много времени, а ответы на этот вопрос почему-то прекратились. Но, в конце концов, вы были правы @Ginnungagap В то время я понятия не имел, что s_client не ретранслирует или иным образом не берет домен в значении -connect и не использует его для SNI. Необходимость указать -servername действительно сработала и привела меня к решению проблемы (проблем). Так что, если вы добавите ответ, я приму его. Спасибо
Ginnungagap avatar
флаг gu
Вы находитесь в лучшем положении, чтобы фактически ответить на вопрос, поскольку у вас есть соответствующие детали. Самостоятельные ответы — это неплохо, и вы должны свободно документировать, что вы делали, какие показания использовали и как решили свою проблему, так как это с большей вероятностью поможет кому-то с тем же вопросом, чем то, что я мог бы написать, что было бы гораздо труднее. более общий ответ, ориентированный на TLS, которого у ServerFault уже много.
флаг jp
Я полагаю, что я опубликовал изрядное количество здесь и Stackoverflow в целом только для того, чтобы позже ответить самому себе. Я всегда предполагал, что на это не одобряют, когда этого можно было избежать. Часто я публикую свою проблему, а затем, преодолев ее в течение часа, нахожу решение, прежде чем кто-либо прокомментирует. Но я думаю, что иногда это заканчивается. Спасибо, что вернулись @Ginnungagap
Рейтинг:0
флаг jp

В конце концов, исправление этого действительно заключалось в использовании переключателя «-servername» в s_client. Я понятия не имел, что он не обрабатывает SNI по умолчанию. @Ginnungagap def направил меня в этом направлении.

Это также привело меня к тому, что моя конфигурация SNI в haproxy.cfg была не совсем правильной. Первоначально у меня была строка, например:

use_backend, если { ssl_fc_sni_reg domain.com }

И идиот, которым я являюсь, не понимал, что «reg» означает регулярное выражение. Однажды я изменил на «конец», потому что пытался сопоставить само имя домины... все получилось.

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

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