C#强制HttpWebRequest使用Tls12而不是SSLv3

C#强制HttpWebRequest使用Tls12而不是SSLv3,c#,ssl,httpwebrequest,poodle-attack,C#,Ssl,Httpwebrequest,Poodle Attack,我有一个应用程序,它使用一些web服务并通过JSON获取数据,在相当长的一段时间内都运行良好,直到最近发现SSLv3容易受到中间人攻击,服务器所有者永远关闭SSLv3。我的应用程序开始出现连接问题,并返回错误“请求已中止:无法建立安全的SSL/TLS连接”。我已尝试寻找解决方案,并找到了在创建web请求之前添加此代码所需的信息: ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; S

我有一个应用程序,它使用一些web服务并通过JSON获取数据,在相当长的一段时间内都运行良好,直到最近发现SSLv3容易受到中间人攻击,服务器所有者永远关闭SSLv3。我的应用程序开始出现连接问题,并返回错误“请求已中止:无法建立安全的SSL/TLS连接”。我已尝试寻找解决方案,并找到了在创建web请求之前添加此代码所需的信息:

        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        ServicePointManager.ServerCertificateValidationCallback = delegate{ 
                    return true;
        };
不幸的是,这里并没有运气,应用程序的行为和以前一样,我不知道这段代码是否无效,或者服务器是否仍然存在一些问题。错误信息非常模糊,我很难判断出哪里出了问题

这是我的密码

        ...
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.ContentType = GetRequestContentType();
        request.Method = method.ToString();
        request.Credentials = GetCredential(url);
        request.PreAuthenticate = true;
        CookieContainer cookieContainer = new CookieContainer();
        request.CookieContainer = cookieContainer;
        ...
我想询问如何将Tls12设置为默认值,并确保我的最终请求符合所需的协议

如果我确认我的应用程序在我的终端工作正常,有没有办法从服务器响应中获得更详细的信息并找出错误的确切原因

谢谢你的回答和建议

编辑


问题的第二部分已经解决了,我发现这个工具几乎可以让我看到传出和传入数据的情况。这个工具还允许解码SSL连接,启用这个选项使我的应用程序开始工作。我假设这个应用程序能够实现我的应用程序和目标主机之间的通信。但我还是不知道会是什么。以及如何使我的应用程序能够自行正确处理这些连接。

迫不及待地让我检查了整个源代码(负责获取互联网数据的部分是第三方,在它正常工作之前,没有理由更改它),我发现了这一行

request.Credentials = GetCredential(url);
调用在其体内具有

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
因此,我在创建
httpwebrequest
之前更改该值的所有尝试都被覆盖。将SecurityProtocolType更改为Tls12,现在一切正常

可能重复的