WCF服务(自托管)通过HTTPS - 获取协商的SSL/TLS协议版本

9

由于安全原因,我们希望在操作系统级别上禁用服务器中的TLS 1.0支持(在以下SChannel注册表中):

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

但是由于 禁用TLS 1.0后SQL Server服务无法启动,我们不得不在操作系统级别上保留TLS 1.0。
现在我们正在尝试强制应用程序级别使用TLS 1.2,而不是在操作系统级别上进行设置。
我们的应用程序是基于.NET 4.5运行的客户端-服务器模式。在客户端调用WCF服务之前,我们设置:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

这确保了客户端将使用TLS1.2协议发送ClientHello消息。

但是在自托管WCF服务的服务器上,我们不知道如何强制使用TLS1.2。服务器端的SSL / TSL协商基于SChannel注册表,因此设置ServicePointManager.SecurityProtocol没有任何效果。

我们想在服务器代码中检查传入的WCF调用并检查调用所使用的TLS协议,并在小于TLS1.2的情况下关闭连接。

是否有任何方法可以获取传入的WCF调用SSL / TLS协议版本?类似于HttpContext.WebSocketNegotiatedProtocol


1
你解决了这个问题吗?我也面临同样的挑战。谢谢。 - Laurence
1个回答

0

你尝试过使用自定义绑定与sslStreamSecurity吗?

<sslStreamSecurity requireClientCertificate="false" sslProtocols="Tls12" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接