Existe-t-il un moyen de mettre en cache les demandes HTTPS dans un serveur proxy?


12

Nous utilisons le serveur proxy Squid dans notre environnement et nous voulons mettre en cache les requêtes HTTPS.

Existe-t-il un moyen de configurer Squid ou en général un serveur proxy pour mettre en cache les requêtes HTTPS?


Cela appartient probablement à security.se
Tom O'Connor

1
Juste pour être clair, utilisez-vous Squid devant un tas de vos propres serveurs, ou l'utilisez-vous entre vos postes de travail et Internet?
Zoredache

Juste pour clarifier. Vous souhaitez mettre en cache les demandes ou les réponses?
Gqqnbig

Réponses:


12

Il existe un moyen de le faire, mais c'est fondamentalement contre les raisons d'utiliser HTTPS.

Voici comment procéder.

  1. Générez un certificat SSL auto-signé pour le site dont vous souhaitez intercepter et mettre en cache les demandes.
  2. Installez et exécutez stunnel sur votre serveur proxy, en lui indiquant que le certificat qu'il doit présenter est celui généré à l'étape 1.
  3. Demandez à Stunnel de transmettre les requêtes décryptées à Squid.
  4. Vous devrez peut-être avoir Stunnel de l'autre côté, ou openssl_client pour rechiffrer la demande au serveur en amont.

Avertissements:

  1. Vos utilisateurs vous détesteront. Chaque demande SSL adressée à ce site présentera une fenêtre de certificat non valide.
  2. Vous vous exposez à des poursuites potentielles pour avoir fait des choses coquines. (IANAL)
  3. Vous ne pourrez obtenir un certificat auto-signé que pour cela, en raison de la façon dont le réseau de confiance PKI pour les certificats SSL est censé fonctionner. Ne rien dire sur les autorités de certification racine compromises.

Je ne vais pas vous donner les détails exacts sur la façon de procéder, car a) je pense que c'est quelque peu contraire à l'éthique, et b) il vaut mieux pour vous d'apprendre à le faire.

Je vous suggère de faire des recherches sur le fonctionnement des attaques d'étourdissement et de l'homme du milieu.


Vous pouvez demander à Trustwave zdnet.com/… de vous vendre un certificat racine afin que vous puissiez implémenter cette solution sans gêner vos utilisateurs: P
Rory

2
En fait, si vous êtes sur un domaine, il est beaucoup plus facile de générer votre propre autorité de certification et de déployer les certificats publics pour celui-ci avec la stratégie de groupe.
Tom O'Connor

1
Faire confiance à un SSC + MITM est utile pour le débogage de protocole, la mise en cache, l'inspection approfondie des paquets et la censure / journalisation. : / Autre que ces raisons, pas si bon.

6

Juste pour expliquer pourquoi cela ne peut pas être fait sans MITM - un proxy ne voit que le nom DNS du serveur auquel vous souhaitez vous connecter lorsque vous utilisez HTTPS chiffré. Il ne voit pas l'URL, ni aucun en-tête de réponse. Il ne peut pas déterminer à quelle ressource individuelle vous accédez sur un site, si elle est ou non en cache, ni quels sont ses délais de modification. Tout ce qu'il peut voir, c'est que quelqu'un veut quelque chose d'un serveur distant utilisant HTTPS.

Cela signifie que la mise en cache ne peut pas fonctionner car le proxy ne sait pas quels objets mis en cache vous donner, ni comment les obtenir en premier lieu.


5

Non, il n'y en a pas: ils sont cryptés ... Une solution de contournement serait quelque chose comme un déploiement d' homme au milieu , mais cela annulerait toutes les raisons derrière https .


1
N'y a-t-il aucune solution de contournement pour y parvenir ou forcer le serveur proxy à déchiffrer et à mettre en cache?
Supratik

Une solution de contournement serait quelque peu de réempêcher le man-in-middledéploiement, mais cela annulerait toutes les raisons derrière https
yrk

5
Je ne suis pas d'accord pour dire que cela annulerait toutes les raisons derrière https. Si vous le faites à la maison et que vous possédez le proxy, vos données utiliseront toujours https entre votre proxy et les sites Web.
brunoqc

@brunoqc c'est le travail d'un VPN.
yrk

1
Si la mise en cache des charges utiles https est importante pour une raison quelconque ou le débogage d'une session https, MITM est super utile. En fait, c'est ainsi que Charles fonctionne.

1

Zeus (maintenant Riverbed) ZTM Traffic Manager peut le faire car il peut traduire le trafic http et https dans les deux sens et mettre en cache le contenu non crypté - cela fonctionne, nous l'utilisons, mais c'est terriblement cher - comme dans le prix d'une Porsche par serveur.


5
Mais cela vous oblige toujours à installer un nouveau certificat racine sur le client, n'est-ce pas? Et vous devez toujours faire confiance au proxy, n'est-ce pas?
phihag
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.