C# 如何使用多个tls协议

C# 如何使用多个tls协议,c#,.net-4.5,.net-4.6.1,C#,.net 4.5,.net 4.6.1,因此,我有一个应用程序目前正在使用.net4.6.1,但出于某种原因,配置文件仍然在说targetframework=net4.5->不要问我为什么不能更改它,因为它是cms系统 我们正在使用一个外部api端点的post,它只能使用tlsv1.2。 为了获得这一点,我放置了以下代码: ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; ServicePointManager.SecurityProtocol =

因此,我有一个应用程序目前正在使用.net4.6.1,但出于某种原因,配置文件仍然在说targetframework=net4.5->不要问我为什么不能更改它,因为它是cms系统

我们正在使用一个外部api端点的post,它只能使用tlsv1.2。 为了获得这一点,我放置了以下代码:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | SecurityProtocolType.Tls12;
很好地工作,但我打破了另一个网络客户端:(

因此,另一个webclient只能使用tls1.0或tls1.1来管理此问题,我已更改为以下代码:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | SecurityProtocolType.Tls12;
当然,我的tls异常得到了解决,但这篇文章在事件查看器中也没有收到任何错误

使用wireshark,客户端使用tls v1.2发送hello,服务器使用tls1.0响应


你知道如何使用带有tls1.2的httpclient和带有v1.0或v1.1的webclient吗?

在http中进行通信时,客户端和服务器之间会使用头进行协商。我无法从你的帖子中判断tls1.0响应是否意味着尝试使用tls1.0进行连接,或者服务器仅支持tls1.0。TLS连接ction是通过TCP层进行的。因此,要查看TLS是否竞争,您需要查看TCP。检查TCP连接是否关闭。您应该看到[FIN]。比较工作和非工作以更好地理解协议。第一台服务器仅使用tlmsv1.2而不是更低版本,而另一台服务器仅支持tlsv1.0和tlsv1.1,但这是一个开始out@jdweng不,它看起来不像我得到客户机hello然后3确认服务器hello证书,hello完成然后客户机密钥交换,然后是应用程序数据,我假设它是我发送的内容,返回一些ack,然后是tcp dup ack。因此,当您获得TLSV1.0时,您必须尝试仅使用TLS1.0的新请求。我已经找到了它。它确实是我使用的代码,但它位于错误的位置