none
System.Net.WebException: 要求は中止されました: SSL/TLS のセキュリティで保護されているチャネルを作成できませんでした RRS feed

  • 質問

  • お世話になります。

    Windows2008R2SERVER、IIS7.5、Framework4.5.2環境でWEBサイトを作成しております。

    問題が発生しているアプリケーションは、クライアントから当社サーバーにアクセスされ、別の他社サーバーにデータをPostするというものです。

    他社サーバーにPostするとき、掲題のエラーが出る場合があり、修正方法が分からない状況です。

    別のサーバーではTLS1.0でしかアクセスできないことがわかっており、明示的に

    「System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls」を設定しています。

    しかしながら

    System.Net.WebException: 要求は中止されました: SSL/TLS のセキュリティで保護されているチャネルを作成できませんでした
       場所 System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
       場所 System.Net.HttpWebRequest.GetRequestStream()

    というExceptionが発生し繋げない場合があります。このエラーは、Tls1.0のみ許可している状況でTLS1.2で接続することを指定した場合などに起きることは把握しております。

    ※繋げない場合といいますのは、同一ユーザーだったとしても再度試みると繋げる場合があります。

    なお、当方のプログラム上、既定をTls1.2、特定のサーバーにはTls1.0を指定するというつくりになっており、特定のサーバーが選択される場合に起きやすいです。ほかに分かっている現象としましては、Tls1.0、1.1、1.2が許可されているサーバーに対しても起きたということです。

    設定の仕方を

    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls| SecurityProtocolType.Tls11| SecurityProtocolType.Tls12;

    としてみようとは思っていますが、あまり自信がありません。

    もし何かよい解決方法をご存知の方がおられましたらご教示いただきたく存じます。

    2016年3月2日 9:13

回答

すべての返信

  • 既に確認されているかもしれませんが、.NET Framework で TLS1.1 および 1.2 を有効化する方法にて

    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

    を案内しているので、質問文の設定で問題ないと思います。それにしてもServicePointManager.SecurityProtocol プロパティのドキュメントは

    SecurityProtocolType 列挙値に定義されている値の 1 つ。

    とあります(英語版も同様)がドキュメントが誤りで1つではなさそうですね。

    • 回答としてマーク Johnny0909 2016年3月18日 2:48
    2016年3月3日 1:58
  • ご意見ありがとうございます。

    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

    と設定することで、ほとんどエラーが出なくなりました。まだ、少なからず発生してしまいますが、相手方の問題もあるのかな?と考えています。

    一旦収まりましたので、回答済みにさせていただきます。


    2016年3月18日 2:50