SoapHttpClientProtocol 利用時にhttps通信をプロキシサーバーに遮断される

概要

WindowsFormアプリを作成した(言語はC#)。Webサービスをアプリから利用するためにWebサービスを追加するものの
  • 開発環境(HTTP通信) → 成功
  • 本番環境(HTTPS通信) → 失敗(プロキシにより拒否された) となる。 Webサービスを使えるようにした

解決方法

.net Framework のバージョンを 4.5.2以上にあげて実行する

状況

ネットワーク環境

環境をざっくりこんな感じ。 クライアント → プロキシサーバー(Squid) → Webサービス

エラー内容

ブレークポイントおいて例外の中身を見ると、ResponseHeaderに「X-Squid-Error: ERR_ACCESS_DENIED」とあり、プロキシサーバーで通信が止められていた様子。

原因

.net Framework のバージョンが4.5.2未満だと、古いバージョンのSSL(SSL3.0 / TLS 1.0)がSoapHttpClientProtocol設定される。 プロキシの設定で古いSSLは許可されておらずWebサービスを利用できなかった様子。
参考:https://stackoverflow.com/questions/42407126/soaphttpclientprotocol-and-tls-1-2-the-client-and-server-cannot-communicate-b:

その他

すごくハマりました。対応に1日かかってます。Fiddlerを使うとHTTPS通信でもWebサービスを利用できたので混乱に拍車がかかることに。(社内のプロキシを通過するためにユーザエージェントを偽装するために使ってます。)
「Fiddlerを使えば通信できてるってことは、UAが関係あるのでは」って思いますます迷走。一生懸命UserAgentプロパティを変更したりしていました。。。
面白かったのは「ネットワーク管理者の元、プロキシに守られた世界は安全なんですけど自由がないですよね。プロキシから自由になろうとすると困難がつきまとう」と同僚にグチったら「進撃の巨人みたいですね」って。この返答力がうらやましいです。

0 件のコメント :

コメントを投稿