Sim*_*ine 5 .net c# ssl tls1.2
.NET 4.6.1下的最小,可复制的工作示例,
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
WebRequest.Create("https://ir.netflix.com/").GetResponse();
Run Code Online (Sandbox Code Playgroud)
产生以下WebException,
请求已中止:无法创建SSL/TLS安全通道.
只是自己访问该页面,运行openssl s_client -connect ir.netflix.com:443 -tls1_2
或浏览SSL实验室分析摘要表明该服务器正在运行正确的TLS 1.2.HttpWebRequest似乎确实在某些时候适用于TLS 1.2(如此处所示),
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
WebRequest.Create("https://www.ssllabs.com:10303").GetResponse();
Run Code Online (Sandbox Code Playgroud)
使用ServerCertificateValidationCallback
(请求对象的全局或本地)禁用证书验证永远不会调用回调; 我想它永远不会达到这个目的,
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback =
(sender, cert, chain, sslPolicyErrors) => true;
HttpWebRequest request = WebRequest.Create("https://ir.netflix.com/") as HttpWebRequest;
request.ServerCertificateValidationCallback =
(sender, cert, chain, sslPolicyErrors) => true;
request.GetResponse();
Run Code Online (Sandbox Code Playgroud)
更新:继续使用Wireshark转储建议使用常见的签名哈希算法(带有RSA的SHA256,带有RSA的SHA1)和一个通用密码套件TLS_RSA_WITH_3DES_EDE_CBC_SHA
(0x000a).除了最初的两个"Client Hello"和"Server Hello,Certificate,Server Hello Done"数据包之外,不再与客户端进行任何联系.
问题:造成这种失败的原因是什么?有没有办法访问HttpWebRequest对象的更多调试信息?
(像这样禁用TLS 1.2,
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
| SecurityProtocolType.Tls11;
WebRequest.Create("https://ir.netflix.com/").GetResponse();
Run Code Online (Sandbox Code Playgroud)
可行,但不是最理想的,因为它会在全局范围内禁用TLS 1.2.似乎没有一个设置只为单个HttpWebRequest禁用TLS 1.2.)
归档时间: |
|
查看次数: |
4667 次 |
最近记录: |