• 締切済み

透過型プロキシのHTTPS通信

Lchan0211の回答

  • Lchan0211
  • ベストアンサー率64% (239/371)
回答No.1

アクセス元のユーザが知らないところで、任意のhttpsサーバの 中間に入って勝手にユーザの通信内容を見たり、それを元に フィルタリングしたりすることはできません。 それができてしまったらSSLによる秘密通信の意味がなくなり、 大きなセキュリティ問題になります。 (第三者攻撃が可能になってしまいます。) そもそも、なぜSSL通信を透過型プロキシで処理したいのでしょうか? データの内容が暗号化されていて中身が秘密である以上、 透過プロキシ対象から外して、あとはTCP/IPレベルのルーティングと パケットフィルタリングで制御すればよいだけだと思いますけど? 通信データ内容をチェックできない限り外部にアクセスさせない方針で あれば、https通信そのものを禁止とする必要があります。 特定のWebサーバをガードしたり代理したりする目的で、 Webサーバの前段にSSLを処理する透過型リバースプロキシーサーバを 立てることは可能です。その場合、リバースプロキシサーバに 元のWebサーバの証明書と秘密鍵ををインストールする必要があります。

sabakanntoka2
質問者

お礼

早速の返信ありがとうございます. >アクセス元のユーザが知らないところで 私の説明不足でした.申し訳ありません.透過型でない方に関しては,クライアントにあらかじめプロキシのルート証明書をインストールしてもらって,プロキシはクライアントからのCONNECTリクエスト後に,自身が作り出した証明書でクライアントとSSLハンドシェイクするように動かしていました. 私の目的は,HTTP/HTTPS通信を利用した全リクエスト・レスポンスのデータの保持です.ここでいうデータというのは暗号化していない状態のものです.Webブラウザにプロキシを指定する(+ルート証明書のインストール)方法では,この目的は達成できたのですが,プロキシを指定することなく,ルート証明書のインストールのみでこの機能を実現したいと考えています.

関連するQ&A

  • プログラマブルなHTTPSプロキシサーバーの構築

    現在プログラマブルなHTTPS PROXY SERVERが作りたくて悩んでおります。 Proxy Serverでやりたいこと: 1.HTTPの場合はHTMLのコンテキスト(ペイロードデータ)データでフィルタリング 2.SSL/TLS通信はそのまま転送(しかし、SrcとDstは保存しておきたい) 3.SSL/TLS通信でクライアントがアクセスしたいDSTアドレスによって、   適宜、証明書を選択したい。 (多分)技術的に求めていること: 1.HTTP/HTTPS通信に対応したProxy Serverを立てられること 2.HTTPS通信の場合はSRCとDSTアドレスが分かること 3.HTTPS通信は転送ができること、また、場合によっては特定の証明書を適応できること 4.HTTP/HTTPS(証明書適応時)通信のフィルタリング、(広告を消したり、特定のヘッダーを埋め込んだり) 私の調べた範囲ですと ・Ruby(webrickなど)では、HTTPSに対応したProxy Serverは開発できませんでした。 ・Python(tornadeやproxpy)などではHTTP/HTTPSに対応したProxy Serverは構築できましたが、HTTPS通信そのものを転送することができませんでした。特定の証明書を埋め込む必要があり、結果的にMITM攻撃を強制することになってしまいます。 ・SQUIDですと、HTTPS通信をそのまま転送(フォワード)することはできますが、 接続先によって証明書を変更したり、ペイロードデータでフィルタリングをしたりするようなことはできませんでした。 上記のことから、RubyかPythonで、HTTPS通信をフォーワードしつつDSTによって、処理を変更することができればよいのですが・・・、できておりません。 良い実装方法を御存じの方がいらっしゃいましたら 是非、教えて頂けませんでしょうか。 乱文となりましたが宜しくお願い致します。

  • HTTPS(SSL)通信とサーブレットについて

    ショッピングサイトなどで、買い物カゴに入れたあと、支払いするときにHTTPS(SSL)通信になりますが、この場合の仕組みがよくわかりません。 (1)これは、WebサーバをHTTP用とHTTPS(SSL)用の2台構成として、買い物カゴにいれるまでは、HTTP用のWebサーバでアクセスしておいて、支払いするときにHTTPS(SSL)用のWebサーバにアクセスさせることで実現してるのでしょうか? (2)ショッピングサイトを見ると、URLはHTTP://がHTTPS://に変わるだけで、サーバが変わっているようには見えませんが、これは、apacheなどのWebサーバが持つバーチャルホスト機能で実現してるのでしょうか? (3)アプリケーションを開発する側としては、HTTP通信を行うサーブレットはHTTP用のサーバに配置して、HTTPS(SSL)通信を行うサーブレットはHTTPS(SSL)用のサーバに配置しておいて、HTTPS(SSL)通信をしたいときは、HTTP用のサーバに配置したサーブレットから、HTTPS(SSL)用のサーバに配置したサーブレットを呼びだすだけでOKでしょうか? (4)また、(3)が正しい場合、サーブレットの配置さえ気にしていれば、特にHTTPS(SSL)用のプログラムを組む必要はないでしょうか? 調べたのですが、最初からHTTP(SSL)通信する場合の方法しか記載がなくて困っています。

  • 透過プロキシを通過しない(?)パケット

    お世話になります。 私はWindowsコンピュータ30台ほどが接続しているLANの管理をしています。 DHCPサーバ(debian6.0)により各クライアントに、クライントのIPアドレス、ゲートウェイのIPアドレス、ネームサーバのIPアドレスを配布しています。 クライアントに配布するゲートウェイのIPアドレスは、実際は透過プロキシ(debian6.0+squid)のIPアドレスです。 クライアントからWANへのパケットの流れは、次のようになるはずです。 --- クライアント(Windows)->透過プロキシ(debian)->ゲートウェイ(Fortigate)->WAN --- そこで、ゲートウェイにおいて、透過プロキシ発のパケット(80番ポートあて)のみの通過を許可して、それ以外のIPアドレス発のパケット(80番ポートあて)を破棄したいと考えています。 しかし、ゲートウェイのログを観察していると、大半は透過プロキシ発のパケットですが、ごく一部、クライアント発のパケット(80番ポートあて)が到着します。 このようなパケットは、どのような場合に発生するのでしょうか? 同様の事例で原因をご存知のかたがありましたら、原因、ヒントを教えてください。 よろしくお願いします。

  • 透過プロキシのための構成について

    現在、ADSLモデム--Buffaloルーター(BBR-4MG、PPPOE認証の仕事をさせている) 経由で各パソコンがWAN側に出れる状態です。スイッチングハブも使用して、5台のクライアントPCとプロキシサーバー(CentOS5.2 Squid)がスイッチングハブ及びルーターに接続されている状況です。 各クライアントPCはIEのプロキシ設定をしています。 CentOSはSquidと、ログ解析ツールlightsquidを導入しているだけです。 各クライアントPCがプロキシの設定をしなくても、プロキシサーバー経由でWAN側に出るように透過プロキシの設定をしたいと思っています。現在の構成のままで可能でしょうか。プロクシサーバーはNIC一枚挿しです。 サーバーのiptables及びselinuxは無効にしております。 サーバーにDHCPを導入、iptablesを有効にして強制的にプロキシサーバーを経由するように設定する必要があるのでしょうか。 よろしくお願いします。

  • 透過型プロキシサーバーの設定

    LAN内で透過型のプロキシを立てたいのですが、OSはRedHut7.3でSquidを使用しiptablesを使用したいのです。NIC2枚刺しでポートのフィルタリングも同時に行う必要が有ります。その際の設定がいまいち良く解からないのです(参考URLが無い)設定内容はある一定の範囲のIPはhttpプロキシで制御しポートのフィルタリングもし他の範囲のIPはhttpプロキシもポートフィルタリングもスルーさせたいと思っています。NATは行いません。 ご教授頂けないでしょうか?宜しくお願い致します。

  • apachの リバースプロキシについて

    WEBの知識がなく、分かりにくい表現になるかと思いますが、よろしくお願いします。アパッチのリバースプロキシを使用して、HttpsのURLを呼びだしPOSTデータを引き渡したいと考え、動作検証を行ったのですが、POSTのデータを受け取ることができませんでした。GETで送られた、データは受け取ることができました。 アパッチのリバースプロキシでは、POSTのデータを受け取ることはできないのでしょうか。   可能の場合は、どのようにすればできるのでしょうか。 また、実現不可の場合は、リバースプロキシ、POST通信、SSLによる暗号化通信の要件を満たせる実装方法をご教示頂きたく。 よろしくお願い致します。

  • Apacheを使ってプロキシサーバを設定

    apache2.0のmod_proxyを使って、プロキシサーバをたてようとしています。HTTPでのアクセスでは、正常に動作するのですが、HTTPSでのアクセスでは正常に動作しません。アドバイスお願いします。 ○下記構成で利用を想定しています クライアント→今回設定するプロキシサーバA→既存のプロキシサーバB→目的のサイト ○ProxyRemote ディレクティブで既存プロキシサーバBを設定していますが ・HTTPアクセスでは想定どおりの動作をしています ・HTTPSではプロキシサーバA上のWEBサーバへアクセスしようとしてしまいます ○クライアントのプロキシ設定を既存のプロキシサーバBに設定し、HTTPSでのアクセスは正常に行えます Apacheのmod_proxy+HTTPS+多段プロキシ(串)は、動作しないのでしょうか? 以上、よろしくお願いします。

  • HTTPプロキシの構成について

    HTTP/HTTPSプロキシの構成について教えてください。 現在、次のような構成を考えています。 ・下位プロキシ  サーバA-1  サーバA-2  の2台を用意。具体的にはキャッシュサーバの用途。(Squid想定) ・上位プロキシ  サーバB-1  サーバB-2  の2台用意。具体的にはウイルスチェックの用途。(Interscan等) クライアントからは、 クライアント→下位プロキシ→上位プロキシ→Internet という経路でHTTP/HTTPS通信が出来るようにしたいです。 下位プロキシは、自動構成スクリプトにより、どちらか一方が クライアントに返るように設定しようと思っています。 上位プロキシについては、ロードバランサ上に仮想サービスを 設けた上で、負荷分散しようとしています。 つまり、 クライアント  →自動構成スクリプトが返す下位プロキシのどちらか(A-1かA-2)   →上位プロキシ用仮想サービス    →仮想サービスが選択した上位プロキシ(B-1かB-2)     →インターネット という経路で最終的にはインターネットへの接続を実現しようとしています。 つまり上位プロキシにはグローバルIPが合計2つ払い出されることになります。 このような構成にした場合、クライアントからのセッションはどうなるでしょうか? 特にEC系サイトの様にセッション管理が重要なサイトの場合、接続元が、 ・サーバB-1(の持つグローバルIP) ・サーバB-2(の持つグローバルIP) のどちらかになるわけですが、接続先Webサーバからの返しがばらばらになってしまうことにより、 問題は起きないものなのでしょうか? 通常、このような問題はWebサイトを構築する側が気にする問題だとは思うのですが。。。 (つまり接続先Webサーバ側でロードバランス方法を注意すべきなはずですよね?) よろしくお願いします。

  • ■ Firefoxのプロキシ設定の仕方について ■

    Firefoxブラウザのプロキシ設定について教えてください。 プロキシ設定には、以下 ・HTTPプロキシ ・SSLプロキシ がありますが、それぞれプロキシサーバーのアドレスを設定すると、接続先は以下のようになるのでしょうか? HTTPでのアクセスはHTTPプロキシで設定したサーバーへ HTTPSでのアクセスは、SSLプロキシで設定したサーバーへ またSSLプロキシで設定したサーバーを経由した場合は、そのプロキシサーバーは単なる転送で、プロキシサーバーからはデータの内容は暗号化されたままで分からないのでしょうか? ご解説いただける方、よろしくお願いいたします。

  • URLConnectionを用いたHTTPS通信時のタイムアウト設定

    現在java1.4.2.10を用いて、 指定のIDに紐づいたURLをDBから取得し、URLConnectionを用いて、取得したURL接続するといったプログラムを作成しております。 今回困っておりますのが、取得したURLがHTTPS通信だった場合のタイムアウト設定方法となります。 HTTPの場合は、下記のサイト http://www.slayers.nu/~kumasaka/Gyoumu/timeout.html を参考にさせていただき、なんとかなりましたが、HTTPSの場合には対応しておらず、困っております。 java1.5にはタイムアウト設定があるのですが、都合上1.5にはできず、 1.4.2で対応したく考えております。 System.setProperty に sun.net.client.defaultReadTimeout を設定することで getInputStream から抜けるまでの時間を制御できるようなのですが、これだと、1接続ごとにタイムアウト設定できません。 socket通信も考えたのですが、socket通信を用いた場合の、HTTPS通信の仕方もわからず、どなたかご教授のほどよろしくお願いいたします。