web-dev-qa-db-ja.com

C#Web要求w RestSharp-「要求は中止されました:SSL / TLSセキュアチャネルを作成できませんでした」

RestSharpを使用した非常に単純なWeb要求があります。

var client = new RestClient("https://website.net");
var request = new RestRequest("/process", Method.GET);
request.AddParameter("cmd", "execute");
IRestResponse response = client.Execute(request);

var content = response.Content;
Console.WriteLine("Response: " + content);

これはエラーメッセージを返します:

要求は中止されました:SSL/TLSセキュアチャネルを作成できませんでした

三つの事:

  1. ブラウザーから期待どおりの応答が得られますが、
  2. Postmanを介して期待する応答を受け取ります。
  3. この要求はテスト環境に送信されていますが、非常に類似したアドレスを持つ実稼働環境に送信して、期待どおりの応答を得ることができます。
  4. 私は今日前に働いていたと確信しています。

彼らの証明書はAES 128でTLS 1.2を使用しているため、RC4によって引き起こされるエラーとは無関係です。

これは、ターゲットフレームワークが.NET 4.5.2のVisual Studio 2015のローカルWin 10マシン上にあります。

なぜこのエラーが発生するのですか?

編集:

基本のSystem.NetとWebRequestクラスを使用するようにコードを変更し、次の行を追加することにより:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

here から示唆されているように、動作します。だから、RestSharpは何らかの理由で間違ったプロトコルを使用していると思いますか?

8
Gerald

.NET 4.5TLS 1.2availableですが、notデフォルトで有効

はい、必要な場合はTLS 1.2 、. NETランタイム用に何らかの方法で指定する必要があります。

参考:.NET 4.7 、. NETはOSのデフォルトのSSL/TLSバージョンを使用します(最新のOSのほとんどはTLS 1.2デフォルトとして)


その他の良いSO回答:

。NET 4.5のデフォルトSecurityProtocol

6
Don Cheadle

この行を移動します:ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

この行の前:WebRequest request = WebRequest.Create(url);

お役に立てば幸いです。

1
user2686690