由于安全原因,我们希望在操作系统级别上禁用服务器中的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?