Passando informações do protocolo SSL para back-end via cabeçalho HTTP


13

Depois que a vulnerabilidade do Poodle foi revelada recentemente, nossa equipe decidiu mudar do SSLv3. Porém, antes da remoção completa, eles desejam avisar aos usuários diários que seu navegador usa o SSLv3 reprovado. Então, surgiu a ideia de

  • Detectar o protocolo (SSLv3, TLS1 etc ...) do descarregamento de SSL de front-end (usamos nginx)
  • Passe essas informações (protocolo SSL) via cabeçalho HTTP para o Apache-back-end.

Em seguida, nosso código de back-end processará esse cabeçalho e avisará se o cliente usar SSLv3 .

Eu sei que o nginx tem recurso proxy_set_header. Então este seria simples como

proxy_set_header X-HTTPS-Protocol $something;

Agora, o problema é: obviamente, o nginx conhece o protocolo usado pelo cliente, mas como posso passar essas informações para o back-end via cabeçalho HTTP?

obrigado


Conforme apontado por um segmento semelhante, o Apache redireciona o usuário se ele estiver usando SSLv3 , essa ideia pode se tornar muito, muito ruim.

O motivo é que o handshake TLS ocorre antes do tráfego HTTP ser enviado pelo túnel TLS. No momento em que nosso back-end detecta o protocolo SSL, o cliente pode ter enviado dados privados em sua primeira solicitação. Para soluções permanentes e de longo prazo, devemos considerar desativar o SSLv3.

Respostas:


14

O Nginx usa muitas variáveis ​​que podem ser usadas na configuração. Esta página forneceu a lista completa das variáveis. A variável que mantém o protocolo em uma solicitação HTTPS é ssl_protocol. Citação:

$ssl_protocol

retorna o protocolo de uma conexão SSL estabelecida;

Então sua proxy_set_headerconfiguração seria

proxy_set_header X-HTTPS-Protocol $ssl_protocol;

Outra referência: aqui


Ponto e vírgula ausente no final de $ ssl_protocol (não posso alterá-lo, pois serverf * l exige que 6 caracteres sejam alterados).
danger89

@ danger89 done that #
sanmai
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.