【问题标题】:RestSharp: Could not create SSL/TLS secure channelRestSharp:无法创建 SSL/TLS 安全通道
【发布时间】:2013-09-22 18:32:22
【问题描述】:

我正在尝试在全新安装的 Windows 8.1 上使用 Visual Studio 2012 Express 中的 RestSharp。我尝试使用的 API 仅支持用于 SSL 的 RC4-SHA。证书有效。

var client = new RestClient();
client.BaseUrl = "https://teststore.mybigcommerce.com/api/v2/";
client.Authenticator = new HttpBasicAuthenticator("username", "key");

var request = new RestRequest();
request.Resource = "time.json";

IRestResponse response = client.Execute(bcrequest);

我不断收到来自客户端的错误消息:The request was aborted: Could not create SSL/TLS secure channel。我以为存在证书问题,直到我最终捕获数据包并发现没有共同的密码套件。 RC4-SHA 在客户端不可用。安装 Windows 7 并运行完全相同的代码后,问题就消失了。

为什么 RC4-SHA 在 Windows 8.1 上的 RestSharp 中不可用?

【问题讨论】:

    标签: c# ssl restsharp windows-8.1


    【解决方案1】:

    我总是在进行初始网络连接之前添加以下代码行来解决这个问题。

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

    【讨论】:

    • 将 .Net SecurityProtocolType 设置为 .Net TLS 1.2 版为我解决了这个问题。似乎 Restsharp 默认选择了不正确的选项。
    【解决方案2】:

    在我安装 Win 8.1 后,我有一个应用程序失败的 tls 握手。我的 Wireshark 捕获的工作和非工作客户端登录显示缺少密码套件。在我连接的服务器上安装一个真正的证书也解决了这个问题。服务器有一个自签名证书。

    终于找到this Microsoft article

    默认情况下不再为 TLS 启用 RC4。应用程序(例如 Internet Explorer)如果依赖于 RC4 可能无法连接

    您可以通过配置这些注册表项来启用 RC4 支持 以下 REG 命令:

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers]

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128]"Enabled"=dword:ffffffff

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128]"Enabled"=dword:ffffffff

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128]"Enabled"=dword:ffffffff

    【讨论】:

    • 在这个网站上有一个以编程方式禁用握手的解决方案(仅在开发版本上,小心!):robertgreiner.com/2013/03/… 只需在任何网络调用之前添加行ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2014-12-26
    • 2017-02-10
    • 2017-08-22
    • 2016-08-03
    • 2018-06-17
    相关资源
    最近更新 更多