Рейтинг:0

Базовая аутентификация и данные от curl к бэкэнду HAProxy не работают при завершении TLS, но работают при сквозной передаче TLS

флаг ru
слушай пки
    bind *:8884 ssl no-sslv3 crt ​​/HAPROXY.pem.ecdsa проверить требуемый ca-файл /CA_CHAIN.pem
    режим http
    HTTP-запрос add-header Content-Type "application/pkcs10"
    http-запрос добавить заголовок Content-Transfer-Encoding "base64"
    http-request add-header Авторизация "Basic somebase64encodedstring"
    default_backend pkis_1
    
серверная часть pkis_1
    режим http
    HTTP-запрос add-header Content-Type "application/pkcs10"
    http-запрос добавить заголовок Content-Transfer-Encoding "base64"
    http-request add-header Авторизация "Basic somebase64encodedstring"
    сервер pkis my.domain.com:443 ssl проверить нет

Используя приведенную выше конфигурацию, мы можем успешно вызвать бэкэнд из curl на определенной конечной точке, используя те же сертификаты, но мы заблокированы на другой конечной точке того же сервера, для которой требуется базовая аутентификация.

Вызов завитка:

curl --cacert '$INITIAL_CACERT' --key '$INITIAL_DEVICE_KEY' --cert '$INITIAL_DEVICE_CERT' --user '$USER':'$PWD' --data @'$1'/'$KEY_NAME'-key.b64 -o '$1'/'$KEY_NAME'-cert-p7.b64 -H "Тип содержимого: application/pkcs10" -H "Кодировка передачи содержимого: base64" https://'$PKI_SERVER':'$PORT '/.well-known/est/'$2'/simpleenroll

Есть ли способ перенаправить все из этой команды curl в бэкэнд?

Странно то, что когда мы удаляем всю аутентификацию ssl и переключаемся в режим tcp в качестве прозрачного прокси, базовая аутентификация работает!

Рейтинг:0
флаг ru

https://serversforhackers.com/c/using-ssl-сертификаты-с-хапрокси

Как написано в статье выше:

Однако вы теряете возможность добавлять или редактировать заголовки HTTP, так как соединение просто направляется через балансировщик нагрузки на прокси-серверы.

Это означает, что ваши серверы приложений потеряют возможность получать заголовки X-Forwarded-*, которые могут включать IP-адрес клиента, порт и используемую схему.

Итак, я понимаю, что невозможно распространять требуемые заголовки с завершением TLS, и поэтому запросы работают, когда мы играем в режиме TLS-passthrough!

флаг cn
Где завершается SSL?
Eos Antigen avatar
флаг ru
вы можете увидеть во фрагменте моего вопроса, в первой строке прослушивания...
Рейтинг:0
флаг cn

Я не могу полностью понять вашу конфигурацию HAProxy, но похоже, что вы жестко кодируете заголовки для своего бэкэнда. Вместо этого я бы добавил заголовки HTTP из curl. Не забывайте о типе контента, базовая информация аутентификации предназначена для передачи от клиента, поскольку не все запросы будут иметь одинаковый тип контента или базовую аутентификацию. Ознакомьтесь с ответами от здесь о том, как передать основную информацию об авторизации в curl.

Eos Antigen avatar
флаг ru
Это правильно, что вы говорите. мы просто жестко закодировали эти заголовки, потому что думали, что они не передаются из запроса. > Проблема в том, что базовая аутентификация каким-то образом не работает, поэтому мы получаем 401 на бэкэнде, который является сервером Apache. Может раздел данных не правильно передан?
флаг cn
Вы Base64Encode базовую аутентификацию, если вы добавляете их в качестве заголовка из завитка? 401 будет выдано, если ваши базовые учетные данные неверны, что означает, что вы отправили их неправильно. Кстати, вам следует отказаться от базовой аутентификации, так как в современном контексте это считается безопасностью для бедных.
Eos Antigen avatar
флаг ru
еще раз проверит кодировку base64, потому что, возможно, там что-то упущено. Но базовая аутентификация - это просто дополнительный шаг аутентификации после аутентификации основного сертификата.... спасибо...

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

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