2011-12-22 62 views
1

私の企業環境では、インターネットアクセスの資格情報を必要とするトランスペアレントプロキシがあります(4時間ごと)。私のintial要求が「https://で」にあるときしかし、https経由でアクセスするときにSSLエラーが発生する透過プロキシ

var client = new WebClient(); 
client.Credientals = new NetworkCredential("username", "password"); 
string result = client.DownloadString("http://..."); 
// this works! 

:URL、例外スローがある:「基になる接続が閉じられました:確立できませんでした私のアプリケーションでは、私は正常にこのような資格情報を渡しますSSL/TLSセキュアチャネルの信頼関係を確立します。

今私の現在の仕事は、周りにある:URL

  • 任意の「HTTPへの新たな要求に私の資格情報を追加します。「// httpsのは」:アクセスしたときにWebExceptionがスロー

    • キャッチ// 「サイト
      • は(これがなければならない 『開く』 4時間のウィンドウのためのインターネットを)
    • 戻って再試行してください 『のhttps://』リクエスト

    これを行うためのより良い/よりクリーンな方法があるのでしょうか?

  • +0

    これはちょっと悪い考えです。潜在的に機密性の高いデータをクリアに公開したいのですか? –

    +0

    機密データがクリアを介して送信されることはありません(私が知る限り)。一般的な "http"リクエストに追加するクレデンシャルは、トランスペアレントプロキシによって傍受されます。次に、元の "https"リクエストを再試行します(これは透過プロキシが私を認証したので動作します) – Brandon

    +0

    真のプロキシではなく、より多くのman-in-the-middleまたはpass-thruサーバを構築しているようです異なる)。どちらの方法でも、プロキシのユーザーがサイトを通過できるようにすると、機密データが公開される可能性があります。 –

    答えて

    6

    あなたが現在使用しているのは、認証付きのHTTPプロキシです。ここまでは順調ですね。しかし、HTTPSリクエストでは機能しません。理由は次のとおりです。

    SSL/TLSはエンドポイントセキュリティです。つまり、単一の暗号化されたチャネルを介してクライアントとサーバー間でデータを送信する必要があります。

    HTTPプロキシに接続すると、「リモートリソースを取得して送信します」というメッセージが表示され、エンドポイントのセキュリティと矛盾します。ここでは、リモートサーバーに直接接続していないため、資格情報を検証できません。また、プロキシがあなたのデータを覗き見ることができます。

    通常、HTTPSを使用して通常のHTTPプロキシに接続することは可能ですが、HTTPプロキシにHTTPSリソースへのアクセスを依頼することもできますが、クライアントがサーバーの資格情報とHTTPプロキシを検証できない転送されるデータを記録または変更することができます。

    HTTPSプロキシは別の方法で動作します。ここでは、HTTPSプロキシサーバーに「リモートアドレスに接続して、何が行われたとしても再送する」と指示します。このようにして、プロキシーはクライアントとサーバーの間に不透明なセキュアなチャネルを作成し、エンドポイントのセキュリティを保護します。実際には、HTTPSプロキシは、必ずしもSSLではなく、すべてのトラフィックをトンネリングするために使用できます。

    したがって、同じチャネルでCONNECT要求(認証が含まれている)を送信してからトンネルを確立し、通常のHTTP GET(URLにホスト/アドレスなし)を送信する必要があります。この要求は宛先サーバ、代理人ではない。

    リクエストを送信する前にWebClientでトンネルを確立できるかどうかについては深刻な疑念があります。オプションとして、SecureBlackbox製品のHTTPBlackboxパッケージを使用すると、HTTPおよびHTTPSリソースにアクセスしたり、認証でHTTPSプロキシ(SecureBlackboxのWebTunneling)をサポートできます。

    +0

    +1詳細な説明。私は興味がありますか?HTTPプロキシを使用してHTTPSサイトにC#経由でアクセスすることはまだ可能ですか?セキュリティについて気にしないとしましょう。 – Gabrielius

    +0

    @ Gabrieliusはい、プロトコルの観点からは、単に「https:// address/path」リソースの要求になります。実際、HTTPプロキシの場合、ファイルをどこから取得するかは重要ではありません(プロキシが要求されたプロトコルをサポートし、現在は通常HTTPとHTTPS、時にはFTPに限定されています)。 –

    +0

    HTTP WebProxy( 'C# 'を使って)を使ってHTTPsアドレスにアクセスする際に、なぜ私が問題を抱えているのか、私に助言してもらえますか?しかし、HTTPサイトでもすべてがうまくいきます。私は 'Timeout'または' Gateway'エラーを受け取ります。前にも触れましたが、プロキシがトラフィックを認識できるかどうかは気にしません。 – Gabrielius

    関連する問題