Настройка входного контроллера HAPROXY с использованием mTLS с configmap только с балансировщиком входной нагрузки, поскольку он разгружен по SSL. Нет необходимости в внутренней проверке

Мне удалось добиться разгрузки SSL с помощью Haproxy. Отличный продукт, и я ценю эту возможность!

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

Просматривая эту ссылку, я создал сертификат клиента, промежуточный сертификат и корневой сертификат.

Следует отметить, что в настоящее время я прекращаю действие сертификата SSL (который получен от letsencrpt) на балансировщике нагрузки.

Однако сертификат клиента и центр сертификации организации отличаются от сертификата lesencrypt tls/ssl, который я сейчас назначил в качестве SSL; это имеет значение?

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

Настройка карты конфигурации.

Это та часть, в которой я запутался.

Вы можете настроитьserver-caиserver-crtно я не думаю, что это применимо здесь, потому что после разгрузки SSL нет ничего, что нужно было бы проверять. Однако мне нужен mTLS через завершение SSL.

Итак, есть конфигурацияclient-ca

Устанавливает центр сертификации клиента, позволяющий HAProxy проверять сертификат клиента (аутентификация TLS), тем самым включая mTLS клиента. Обратите внимание: для работы аутентификации TLS должна быть включена разгрузка SSL.

В данном случае клиентом является тот клиент, который мне нужен, то есть устройство/интерфейс. Не балансировщик нагрузки, действующий как клиент внутреннего сервера.

Когда я смотрю на то, как это настроено:

      frontend mysite
 bind 192.168.56.20:80
 bind 192.168.56.20:443  ssl crt /etc/haproxy/certs/ssl.crt verify required ca-file /etc/haproxy/certs/intermediate-ca.crt ca-verify-file /etc/haproxy/certs/root-ca.crt
 http-request redirect scheme https unless { ssl_fc }
 default_backend apiservers

Можно ли сделать то же самое с картой конфигурации контроллера, как указано ниже? В этой методологии применения клиентского mTLS происходит гораздо больше, чем то, что я рассматриваю как флаги/конфигурации. Есть ли способ добиться этого в Kubernetes без configmap?

Параметр ssl включает завершение SSL для этого прослушивателя. Параметр crt определяет расположение SSL-сертификата в формате PEM. Этот сертификат должен содержать как открытый сертификат, так и закрытый ключ.

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

  • аргумент SSL включает HTTPS
  • аргумент crt указывает SSL-сертификат сервера, который вы обычно получаете от поставщика сертификатов, такого как Let's Encrypt.
  • аргумент «проверить требуемый» требует, чтобы клиенты отправили сертификат клиента
  • аргумент ca-file указывает промежуточный сертификат, с помощью которого мы проверим, что сертификат клиента был подписан центром сертификации нашей организации.
  • Аргумент ca-verify-file (введенный в HAProxy 2.2) включает сертификат корневого центра сертификации, что позволяет HAProxy отправлять более короткий список центров сертификации клиенту в сообщении SERVER HELLO, которое будет использоваться для проверки, но сохраняя при этом центры сертификации верхнего уровня, например как корень, вне этого списка. HAProxy требует, чтобы корневой центр сертификации был установлен с помощью этого аргумента или включен в файл промежуточного CA.crt (совместимость со старыми версиями HAProxy).

Кроме того, моя причина, по которой я сейчас хочу использовать letsencrypt, а не частный центр сертификации, заключается в том, что я не могу обновлять сертификаты устройств каждые 60–90 дней. Это было бы неэффективно. В этом случае, и, пожалуйста, дайте мне знать в противном случае, я думаю, что лучше использовать либо реального поставщика ключей/сертификатов, либо при тестировании разработки использовать сертификаты openssl, как в инструкции HAProxy.

Это странно, но вам действительно нужно подумать о том, что такое «клиент» с этими абстракциями, потому что я бы никогда не использовал это для обычного входа в систему на веб-странице, а скорее для связи между серверами, и в этом смысле этот сервер является клиентом для этого сервера. Или, в моем случае, это устройство является клиентом этого балансировщика нагрузки.

0 ответов

Другие вопросы по тегам