Passando le informazioni del protocollo SSL al back-end tramite intestazione HTTP


13

Dopo che la vulnerabilità di Poodle è stata rivelata di recente, il nostro team ha deciso di passare da SSLv3. Ma prima della completa rimozione, vogliono avvisare gli utenti quotidiani che il loro browser utilizza SSLv3 obsoleto. Quindi, ci è venuta l'idea di

  • Rileva il protocollo (SSLv3, TLS1 ecc ...) dall'offload SSL front-end (usiamo nginx)
  • Passare tali informazioni (protocollo SSL) tramite intestazione HTTP a Apache-backend.

Quindi il nostro codice di backend elaborerà quell'intestazione e avviserà se il client utilizza SSLv3 .

Sono consapevole che nginx ha funzionalità proxy_set_header. Quindi questo sarebbe semplice

proxy_set_header X-HTTPS-Protocol $something;

Ora, il problema è: ovviamente nginx conosce il protocollo utilizzato dal client, ma come posso passare quelle informazioni al back-end tramite intestazione HTTP?

Grazie


Come sottolineato da un thread simile Apache reindirizza l'utente se sta usando SSLv3 , questa idea potrebbe diventare una pessima idea.

Il motivo è che l'handshake TLS si verifica prima che il traffico HTTP venga inviato attraverso il tunnel TLS. Quando il nostro back-end rileva il protocollo SSL, il client potrebbe aver inviato dati privati ​​nella sua prima richiesta. Per soluzioni permanenti ea lungo termine dovremmo considerare di disabilitare SSLv3.

Risposte:


14

Nginx usa molte variabili che possono essere usate in config. Questa pagina fornisce l'elenco completo delle variabili. La variabile che contiene il protocollo in una richiesta HTTPS è ssl_protocol. Citazione:

$ssl_protocol

restituisce il protocollo di una connessione SSL stabilita;

Quindi la tua proxy_set_headerconfigurazione sarebbe

proxy_set_header X-HTTPS-Protocol $ssl_protocol;

Un altro riferimento: qui


Punto e virgola mancante alla fine di $ ssl_protocol (non posso cambiarlo poiché serverf * l richiede 6 caratteri da modificare).
danger89,

@ danger89 l'ha fatto
sanmai il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.