我的应用程序(.net 3.5 sp1)使用HttpWebRequest与不同的端点进行通信,有时通过HTTPS进行通信,其中每个托管服务器可能具有不同的安全协议(protocol)要求(例如TLS或SSL3或两者之一)。
通常,服务器在使用什么安全协议(protocol)使用TLS或SSL3时会表现得很好,并且会愉快地进行协商/回退,但有些服务器则不会,并且当.net设置为TLS或SSL3(我认为是默认设置)时,那些仅支持SSL3的服务器会导致.net引发发送错误。
据我所知,.net为ServicePointManager对象提供了一个属性SecurityProtocol,可以将其设置为TLS,SSL3或两者。因此,理想情况下,将想法和想法都设置为客户机和服务器应该协商使用什么,但是如前所述,这似乎不起作用。
假设您可以设置ServicePointManager.SecurityProtocol = Ssl3,但是要使用TLS的端点呢?
我看到的ServicePointManager和SecurityProtocol问题是它的静态范围,因此是应用程序范围的。
因此,问题就来了。
我如何将HttpWebRequest与其他SecurityProtocol结合使用
1)网址1设置为使用TLS | Ssl3(协商)
2)网址2设置为Ssl3(仅限Ssl3)
最佳答案
不幸的是,您似乎无法按服务点自定义此功能。我建议您在MS Connect网站上为此区域提出功能请求。
作为肮脏的解决方法,您可以尝试在新的appdomain中执行需要其他安全协议(protocol)的网站。静态实例是每个appdomain的,因此应该为您提供所需的隔离。