web-dev-qa-db-ja.com

プロキシサーバーでHTTPSリクエストをキャッシュする方法はありますか?

私たちの環境ではSquidプロキシサーバーを使用しており、HTTPSリクエストをキャッシュしたいと考えています。

Squidまたは一般的にプロキシサーバーを構成してHTTPSリクエストをキャッシュする方法はありますか?

12
Supratik

これを行う方法はありますが、基本的にはHTTPSを使用する理由に反しています。

これがあなたのやり方です。

  1. リクエストをインターセプトしてキャッシュするサイトの自己署名SSL証明書を生成します。
  2. Stunnelをプロキシサーバーにインストールして実行し、提示する証明書がステージ1で生成されたものであることを伝えます。
  3. Stunnelに復号化されたリクエストをsquidに転送させます。
  4. 反対側にstunnelを配置するか、上流サーバーへの要求を再暗号化するためにopenssl_clientが必要になる場合があります。

警告:

  1. ユーザーはあなたを嫌います。そのサイトへのすべてのSSL要求は、無効な証明書ウィンドウを表示します。
  2. あなたはいたずらをするための潜在的な訴訟に身をさらしています。 (IANAL)
  3. SSL証明書に対するPKIの信頼のWebがどのように機能することになっているため、このために機能するのは自己署名証明書だけです。侵害されたルートCAについては何も言わない。

a)少し非倫理的だと思うので、これを行う方法の正確な詳細を説明するつもりはありませんb)それをするために。

トンネル攻撃と中間者攻撃のしくみを調査することをお勧めします。

12
Tom O'Connor

これがMITMなしでは実行できない理由を説明するだけです-プロキシは、暗号化されたHTTPSを使用している場合に接続するサーバーのDNS名のみを認識します。 URLも応答ヘッダーも表示されません。サイトでアクセスしている個々のリソース、キャッシュ可能かどうか、変更時間は特定できません。誰かがHTTPSを使用してリモートサーバーから何かを望んでいるだけです。

これは、プロキシがキャッシュするオブジェクトを知らないため、またはそもそもそれらを取得する方法がわからないため、キャッシュが機能しないことを意味します。

6
robf

いいえ、ありません:それらは暗号化されています...回避策はman-in-middleデプロイメントのようなものですが、それはhttpsの背後にあるすべての理由を無効にします。

5
yrk

Zeus(現在のRiverbedの)ZTM Traffic Managerは、httpとhttpsのトラフィックを双方向に変換し、暗号化されていないコンテンツをキャッシュできるため、これを実行できます。

1
Chopper3