2017-07-27 23 views
2

StackOverflowにはたくさんの質問と回答があり、まったく同じまたは非常によく似たエラーメッセージが表示されています。それらの90%。私はまだこれを解決することはできません。HTTPS over proxyは動作しません

以下はVisual Studioで提案されたWebClientのコードです。しかし、私もHttpWebRequest/WebRequestとしましたが、それは時代遅れであるという警告にもかかわらず、試みました。変更なし、同じエラーが発生しました: "リクエストが中止されました:SSL/TLSセキュアチャンネルを作成できませんでした。"

ここにコードがあります。 makeProxyは実際にはわずか3行で、新しいWebProxyとそれに加えて資格があります。 (a)間違った資格情報を提供すると認証エラーが出る、(b)httpsページではなくhttpに行くと戻ってきてしまうインターネット上で。

protected string getToken() { 
    string url = ConfigurationManager.AppSettings["domo_api_url_auth"];  
    WebClient c = new WebClient(); 
    c.Proxy = makeProxy(); 
    c.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["domo_api_cid"], ConfigurationManager.AppSettings["domo_api_pwd"]); 
    c.Encoding = System.Text.Encoding.UTF8; 

    ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; 
    // ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 
    // ServicePointManager.ServerCertificateValidationCallback += ValidateRemoteCertificate; 

    Stream responseStream = c.OpenRead(url); 
    return new StreamReader(responseStream).ReadToEnd(); 
} 

私の問題は、メッセージがあまり役に立たないということです。私もそれをデバッグしようとしたが、助けにはならなかった。私は到達しようとしているWebサービスのサイト上の証明書を考え、その証明書をW3SVCに許可するプロセスを行った。助けてくれなかった。 google.comやstackoverflow.comや自分の会社のウェブサイトなど、すべてのhttpsサイトで同じエラーが発生します。しかし、httpだけのランダムなニュースサイトに行くと、すべて正常に動作します。

極端に疑わしいのは、最初にServerCertificateValidationCallback行のコメントを外しても機能しないことです。また、2番目のコメントを外すと、コードが検証にリダイレクトされたと言われています。妥当性確認のようにも開始されません。

この問題のトラブルシューティング方法を教えてください。 Webリクエスト/レスポンスプロセスのどの時点で失敗するのか分かりません。

+0

てみはServicePointManager.SecurityProtocolに(TLSを含む)すべてのフラグを追加します。プロキシを使用するようにWindowsをセットアップすると、ブラウザの作業でHTTPSが動作しますか? - 証明書を見て、正当なものがサイトに発行されたものか、プロキシサーバーによって挿入されたものかを確認します。トレースを有効にすると、詳細なログを取得できます。https://docs.microsoft.com/en-us/dotnet/framework/network-programming/how-to-configure-network-tracing –

+0

はい、私は私のラップトップ上の同じプロキシ(ここでも私はこれで作業しています)とhttpsはどこでも、すべてのブラウザ、すべてのサイトで動作します。 –

+0

ああ、私はこれを信じていない... @AlexK。これを回答として追加してください。私は解決策として受け入れます。 –

答えて

2

あなたは可能性が高いのSSLv3に加えて、TLSを有効にする必要があります。

ServicePointManager.SecurityProtocol = 
    SecurityProtocolType.Ssl3 | 
    SecurityProtocolType.Tls | 
    SecurityProtocolType.Tls11 | 
    SecurityProtocolType.Tls12; 
関連する問題