Passer les informations du protocole SSL au backend via l'en-tête HTTP


13

Après que la vulnérabilité de Poodle a été révélée récemment, notre équipe a décidé de passer de SSLv3. Mais avant la suppression complète, ils veulent avertir les utilisateurs quotidiens que leur navigateur utilise SSLv3 obsolète. Nous avons donc eu l'idée de

  • Détecter le protocole (SSLv3, TLS1 etc ...) du déchargement SSL frontal (nous utilisons nginx)
  • Passez cette information (protocole SSL) via l'en-tête HTTP à Apache-backend.

Ensuite, notre code principal traitera cet en-tête et donnera un avertissement si le client utilise SSLv3 .

Je sais que nginx a une fonctionnalité proxy_set_header. Donc, celui-ci serait aussi simple que

proxy_set_header X-HTTPS-Protocol $something;

Maintenant, le problème est: évidemment nginx connaît le protocole utilisé par le client, mais comment puis-je transmettre ces informations au backend via l'en-tête HTTP?

Merci


Comme l'a souligné un utilisateur de redirection de thread Apache similaire s'il utilise SSLv3 , cette idée peut devenir très très mauvaise.

La raison est que l'établissement de liaison TLS a lieu avant que le trafic HTTP ne soit envoyé via le tunnel TLS. Au moment où notre backend détecte le protocole SSL, le client peut avoir envoyé des données privées lors de sa première demande. Pour une solution permanente et à long terme, nous devrions envisager de désactiver SSLv3.

Réponses:


14

Nginx utilise de nombreuses variables qui peuvent être utilisées dans la configuration. Cette page fournit la liste complète des variables. La variable qui contient le protocole dans une demande HTTPS est ssl_protocol. Citation:

$ssl_protocol

renvoie le protocole d'une connexion SSL établie;

Votre proxy_set_headerconfiguration serait donc

proxy_set_header X-HTTPS-Protocol $ssl_protocol;

Autre référence: ici


Point-virgule manquant à la fin de $ ssl_protocol (je ne peux pas le changer car serverf * l nécessite que 6 caractères soient modifiés).
danger89

@ danger89 a fait ça
sanmai
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.