web-dev-qa-db-fra.com

Passer les informations de protocole SSL au backend via HTTP en-tête

Une fois que la vulnérabilité du caniche 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. Donc, nous avons monté l'idée de

  • Détecter le protocole (SSLV3, TLS1 etc ...) de l'extrémité frontale SSL-déchargement (nous utilisons nginx)
  • Passez cette information (protocole SSL) via l'en-tête HTTP à Apache-Backend.

Ensuite, notre code de backend traitera cet en-tête et donnera un avertissement Si le client utilise SSLV3.

Je suis conscient que nginx a la fonctionnalité proxy_set_header. Donc celui-ci serait simple comme

proxy_set_header X-HTTPS-Protocol $something;

Maintenant, le problème est: évidemment nginx connaissez le protocole utilisé par le client, mais comment puis-je transmettre cette information à la backend via HTTP Header?

Merci


Comme indiqué par un thread similaire Apache Redirect User s'ils utilisent SSLV , cette idée peut devenir très très mauvaise idée.

La motif de main TLS se produit avant que le trafic HTTP 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 dans sa première demande. Pour une solution permanente et à long terme, nous devrions envisager de désactiver SSLV3.

13
tpml7

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

$ssl_protocol

renvoie le protocole d'une connexion SSL établie;

Donc votre proxy_set_header la configuration serait

proxy_set_header X-HTTPS-Protocol $ssl_protocol;

Une autre référence: ici

14
masegaloeh