我正在尝试在全新安装的Windows 8.1中使用Visual Studio 2012 Express中的RestSharp。我试图使用的API仅支持RC4-SHA用于SSL。证书有效。
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并运行完全相同的代码后,问题就消失了。
答案 0 :(得分:5)
在我确定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
答案 1 :(得分:3)
我总是在进行初始网络连接之前添加以下代码行来解决此问题。
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls11;