gpt4 book ai didi

.net - 在每个请求的 .net HttpWebRequest 上设置 SecurityProtocol(Ssl3 或 TLS)

转载 作者:行者123 更新时间:2023-12-03 08:48:07 24 4
gpt4 key购买 nike

我的应用程序(.net 3.5 sp1)使用 HttpWebRequest 与不同的端点进行通信,有时它通过 HTTPS 进行通信,其中每个托管服务器可能有不同的安全协议(protocol)要求,例如 TLS 或 SSL3 或其中任何一个。

通常,服务器可以很好地协商/回退使用 TLS 或 SSL3 的 SecurityProtocol,但有些则不会,并且当 .net 设置为 TLS 或 SSL3(我认为默认值)时,那些仅支持 SSL3 的服务器会导致 .net抛出一个发送错误。

据我所知,.net 为 ServicePointManager 对象提供了一个属性 SecurityProtocol,该属性可以设置为 TLS、SSL3 或两者。因此,理想情况下,当设置为这两个想法时,客户端和服务器应该协商使用什么,但如前所述,这似乎不起作用。

假设您可以设置 ServicePointManager.SecurityProtocol = Ssl3 但是想要使用 TLS 的端点呢?

我看到的 ServicePointManager 和 SecurityProtocol 的问题是它是静态的,因此是应用程序域范围内的。

所以对于这个问题..

我将如何使用具有不同 SecurityProtocol 的 HttpWebRequest,例如

1) url 1 设置为使用 TLS | SSL3(协商)

2) url 2 设置为 Ssl3(仅限 Ssl3)

最佳答案

在我们的一些供应商停止支持 ssl3 而其他供应商专门使用它之后,我们的系统中出现了许多问题,这些问题可以通过这个问题的功能来解决。但是六年后,我们仍然没有建立机制来实现这一目标。我们的解决方法是明确定义支持所有场景的安全协议(protocol),如下所示:

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

关于.net - 在每个请求的 .net HttpWebRequest 上设置 SecurityProtocol(Ssl3 或 TLS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com