TLS 1.2 与 .NET Framework 4.5 的 WCF 客户端绑定配置

问题描述 投票:0回答:1

.NET Framework 4.5 支持 TLS 1.2,但不是默认的。这意味着,如果不采取任何措施让框架使用 TLS 1.2,WCF Web 服务客户端将无法连接到需要 TLS 1.2 的端点(它应该需要 1.2 - 早期版本不安全)。

我找到了相关问题的答案(例如 WCF Client in .NET 4.5.1: How to enable TLS 1.2 when WebRequest is using?),它们提供了可行的解决方案,但我的问题具体是:

是否可以在 WCF 绑定配置中指定 TLS 1.2?

只是为了预防对我寻求一种使用绑定配置而不是使用静态属性来执行此操作的动机的预期攻击:使用全局(静态而不是线程本地)ServicePointManager.SecurityProtocol 属性是一种不合逻辑的编程模型。在现实世界中,您的应用程序很可能需要使用多个 Web 服务,其中一些需要 TLS 1.2,但另一些则不支持。如果所述应用程序是多线程的,例如网络服务器,则存在竞争条件。两个线程,其中一个尝试连接到需要 TLS 1.2 的服务,另一个尝试连接到不支持 TLS 1.2 的服务,可能会互相妨碍,从而在创建通道之前都更改安全协议 - 导致两者之一失败。

当然,它不太可能导致大量错误,但根据错误的处理方式(例如是否有自动重试,甚至可能),这是一个潜在的严重问题。无论如何,如果有简单的方法可以避免竞争条件,为什么还要创建竞争条件呢?如果我有一种方法可以在绑定配置中指定应使用哪个安全协议,然后 .NET 仅将其应用于如此配置的端点,那么竞争条件就会消失。

.net wcf tls1.2
1个回答
0
投票

根据我的经验,如果要使用 Tls1.2+,则必须在客户端的代码中指定。.NET Framework 默认为特定版本,这在运行未升级固件但连接到的应用程序时会出现问题在 Tls1.2+ 环境中运行的端点。

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

我不知道通过客户端绑定配置进行设置

© www.soinside.com 2019 - 2024. All rights reserved.