
У меня есть TCP-приложение, которое использует взаимный TLS для аутентификации подключающихся клиентов.
Из-за возросшего трафика я хотел бы кластеризовать приложение и распределить нагрузку между узлами с помощью nginx. У меня уже есть работающий stream
модуль nginx, который (насколько я понимаю) действует как балансировщик уровня 4.
На этом этапе мне кажется разумным немедленно отбрасывать попытки подключения, которые не прошли проверку mTLS, в nginx, чтобы вышестоящие узлы не беспокоились об этом.
Однако это означает, что мне придется завершить соединение TLS в nginx. К сожалению, мое приложение полагается на получение идентификатора клиента из проверенного клиентского сертификата.
Есть ли способ проверить mTLS в nginx, а затем повторно использовать клиентский сертификат для восходящего соединения?
Для HTTP-приложений я видел обходной путь: разорвать TLS-соединение в nginx и передать клиентский сертификат в виде пользовательского заголовка (например, proxy_set_header X-SSL-CERT $ssl_client_cert;
), но в моем случае это, очевидно, не сработает.
решение1
Нет, так сделать нельзя. Нельзя одновременно разорвать соединение и сохранить его сквозным.
Но если тыдоверятьваш прокси-сервер может просто внедрить заголовок и использовать свой собственный клиентский сертификат для подтверждения того, что соединение является надежным и инициировано данным клиентским сертификатом.