
Eu tenho um aplicativo TCP que usa TLS mútuo para autenticar clientes conectados.
Devido ao aumento do tráfego, gostaria de agrupar o aplicativo e balancear a carga dos nós com o nginx. Já tenho isso funcionando com stream
o módulo do nginx, que (no meu entender) atua como um balanceador da camada 4.
Neste ponto, parece-me razoável abandonar as tentativas de conexão que falham na verificação mTLS imediatamente no nginx, para que os nós upstream não precisem se preocupar com elas.
No entanto, isso significa que eu teria que encerrar a conexão TLS no nginx. Infelizmente, meu aplicativo depende da obtenção da identidade do cliente no certificado de cliente verificado.
Existe alguma maneira de verificar o mTLS no nginx e reutilizar o certificado do cliente para a conexão upstream?
Para aplicativos HTTP, vi a solução alternativa para encerrar a conexão TLS no nginx e passar o certificado do cliente como um cabeçalho personalizado (por exemplo proxy_set_header X-SSL-CERT $ssl_client_cert;
), mas isso obviamente não funcionaria no meu caso.
Responder1
Não, você não pode fazer isso. Você não pode encerrar a conexão e mantê-la de ponta a ponta.
Mas se vocêconfiarseu proxy, seu proxy pode simplesmente injetar um cabeçalho e usar seu próprio certificado de cliente para autenticar que a conexão é confiável e iniciada por um determinado certificado de cliente.