2012-04-10 39 views
4

私の設定では、2層の透過プロキシがあります。クライアントがSSLリクエストを行うとき、私はそれが満たしている最初のプロキシにクライアントとのハンドシェイクを試みることなくトラフィックを別のものに単に転送させたいと思っています。ノードhttpプロキシSSL透過

セットアップはおもしろそうですが、私の場合は第2プロキシが第1のものに(ある他のサービスを通じて)自分自身を時折のみ登録します。それは最初のことを伝えます: "私はいくつかのトラフィックに興味があります:_ _"です。ほとんどの場合、第1プロキシは単に作業を行います。

httpProxy(ノードプロキシ内)プロキシSSLリクエストは可能ですか? httpsProxyを使用する必要があります(クライアントとハンドシェイクを行います)。

+1

MITMプロキシ(クライアントがそれを信頼するように設定されていれば、*接続*内を見ることができます)か、通常のHTTPSプロキシと同等のものですか? – Bruno

答えて

5

既存のhttpsProxyでこれをすべて実行できます。別のサーバーに非ノードのプロキシまたはプロキシを使用したい場合を除いて、私はあなたが2つを持つことによって得られるものを見ることができません。

必要なログ/署名ロジックを既存のhttpsProxyに追加するだけです。

通常、私はプロキシ上でhttpsを使用して、開いているポートの数を制限し、実行中のすべてのノードサーバーでhttpsを実行する必要性を排除します。また、http-basicライブラリを使用してBasic Authを追加することもできます。

私のコード例を参照してください:https://github.com/TotallyInformation/node-proxy-https-example/blob/master/proxy.js

EDIT 2012-05-15:あなたはあなたではなくノードよりもやりたいstunnelのようなものを見ているべきでない場合はうーん、いくつかの考えた後、私は疑問に思いますか?

+0

ああ、それを試してみましょう – badunk

+0

申し訳ありませんが、私は私の質問を明確にしました。私はあなたがそれを間違って理解したかもしれないと思う。私は、私の既存のhttpsProxyが私が前に言及したことをすることができることを理解しています - しかし、それはポイントではありませんでした。 – badunk

+0

あなたの例では、クライアントとプロキシ間の接続がHTTPS(そしておそらくターゲットサーバへの接続)を超えていますか?私はその点を見ることができましたが、透過的なプロキシのコンテキストでは意味をなさない。 – Bruno

2

(参考のために、私はすでにmy answer to your similar question on ServerFaultでそれらのいくつかのポイントを作った。)

  • あなたはMITMプロキシの後であれば(つまり、使用してSSLコンテンツ内部を見ることができますプロキシですクライアントがその証明書を信頼するように設定する必要があるため、完全に透過的になることはほとんどありません。

    さらに、すべてのクライアントがサーバー名の表示拡張子を使用していない限り、プロキシ自体は証明書を発行するホストを確実に判断できません(通常のHTTPSプロキシがクライアントによって発行されたCONNECT要求)。

  • MITMプロキシの後にでない場合はです。ルータ経由で最初の接続を許可することもできます。そのトラフィックを記録する場合は、ルータが暗号化されたパケットを記録できる可能性があります。

    ルータがSSL/TLSパケットをキャッチして、プロキシに透過的に送信するだけで、ターゲットサーバへのトラフィックに影響を与えないようにするだけでは意味がありません。 (性質上、トランスペアレントプロキシは、クライアントがそれを知るように設定されていないことを意味するので、要求されたホストとポートを持つ可能性のあるCONNECTメソッドを送信することさえありません。 。より多くのルータは何ができるかよりも)

    EDIT:もう一度、あなただけでは、透過的な接続の内容を分析するためにHTTPプロキシを使用することはできません。通常のプロキシを使用している場合でも、HTTPS接続は直接ターゲットサーバに中継されます。SSL/TLS接続自体は、元のクライアントとターゲットサーバの間で確立されます。 SSL/TLSを使用するポイントは、この接続を保護し、何かが接続を調べようとしている場合にクライアントに通知することです。

    プレーンHTTPトランスペアレントプロキシサーバは、(a)トラフィックを見ることができます(特に、要求ラインとHTTP Hostヘッダーが見えて、プロキシがそれを作成する要求を知ることができます)。(b)トラフィックは透過的に変更されるので、最初のクライアントは要求が直接ではなく、あたかもそうであるかのように動作しないことに気付かない。

    HTTPSではこれらのいずれの条件も当てはまりません。 HTTPプロキシを経由するHTTPS接続は、CONNECTコマンドを送信し、そのようなプロキシを使用するように構成されたクライアントからの明示的な要求の後、単純にトンネルになります。

    SSL/TLS接続を受け入れ、それを(おそらくSTunnelのような)HTTPプロキシの前に解読するSSL/TLSサーバーが必要です。ただし、適切な証明書を生成することができないため、これは透過的ではありません。

+0

ありがとう - 私はこの場合MITMの後ではありません。しかしながら、第2代理は、転送されるときにMITMとして機能する。それ以外の場合は、ルータ経由で中継します。 あなたが言いたいのは私が達成したいことですが、ノードプロキシを使ってはできないようです。 – badunk

関連する問題