Passando informações do protocolo SSL para backend via cabeçalho HTTP

13

Depois que a vulnerabilidade do Poodle foi revelada recentemente, nossa equipe decidiu migrar do SSLv3. Mas antes da remoção completa, eles querem avisar os usuários diários que seu navegador usa o SSLv3 obsoleto. Então, surgiu a ideia de

  • Detecta o protocolo (SSLv3, TLS1 etc ...) do descarregamento de SSL do front end (usamos nginx)
  • Passe essa informação (protocolo SSL) via cabeçalho HTTP para o Apache-backend.

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

Estou ciente de que o nginx possui o recurso proxy_set_header . Então, este seria simples como

proxy_set_header X-HTTPS-Protocol $something;

Agora, o problema é: obviamente nginx sabe o protocolo usado pelo cliente, mas como posso passar essa informação para o backend via cabeçalho HTTP?

Obrigado

Como apontado por um segmento similar usuário redirecionado do Apache se eles estão usando o SSLv3 , essa idéia pode se tornar uma idéia muito ruim .

A razão é que o handshake de TLS ocorre antes que o tráfego HTTP seja 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.

    
por tpml7 19.10.2014 / 10:15

1 resposta

13

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 contém o protocolo em uma solicitação HTTPS é ssl_protocol . Citação:

$ssl_protocol

returns the protocol of an established SSL connection;

Portanto, sua configuração proxy_set_header seria

proxy_set_header X-HTTPS-Protocol $ssl_protocol;

Outra referência: aqui

    
por 19.10.2014 / 10:25