概要
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 件のコメント :
コメントを投稿