[英]How to Check if a WPF based Thick Client application uses Transport Layer Security(TLS) or not
我们有一个基于Windows的桌面胖客户端应用程序,其前端基于WPF + Telerik构建,并使用WCF Web服务进行后端通信。
现在,通信正在通过SSL3.0进行
由于SSL3.0的最新安全问题,已决定在服务器端使用TLS 1.2或TLS 1.1来强制仅通过TLS进行所有通信。
我们尝试使用Fiddler和Wireshark验证基础Web服务通信。 我们可以看到通过TLS发生了200个“ Tunnel to”请求。
但是,还有其他方法可以交叉检查ThinClient应用程序是否为WebService请求显式或隐式使用TLS ...?
Windows已在2014年12月15日Windows Update中推送了TLS修补程序,并且Windows 2008 R2 App Server上也安装了该修补程序。 SSL3.0尚未作为后备选项被禁用,但明确未启用TLS。 但是MS KB文章说TLS优先(TLS1.2> TLS1.1> TLS1.0> SSL3.0)
安全更新(KnowledgeBase文章KB2992611,然后是另一个更新KB3018238)已于2014年12月9日发布,并已于2014年12月15日通过HP Monthly Patching安装。
请检查以下链接,以获取有关安全补丁及其影响的更多详细信息。 SSLv3.0漏洞修补程序上的官方Microsoft更新https://support2.microsoft.com/kb/2992611/zh-cn链接2 :technet.microsoft.com/en-us/library/security/ms14-066.aspx
有关支持TLS Link3的详细信息:blogs.msdn.com/b/kaushal/archive/2011/10/02/support-for-ssl-tls-protocols-on-windows.aspx
最初的补丁KB2992611和通过KB3018238 Link4立即修复所标识的问题infoworld.com/article/2848574/operating-systems/microsoft-botches-kb-2992611-schannel-patch-tls-alert-code-40-slow-sql-server-块-IIS-sites.html
如果您打算测试是否已在服务器上启用了TLS /可以进行协商,则可以使用TcpClient
和SSLStream
编写一些探测代码以强制进行TLS协商,并查看它是否实际上已经过协商。 看到:
请参阅https://www.simple-talk.com/dotnet/.net-framework/tlsssl-and-.net-framework-4.0/中的 SendMessageToServer
如何创建使用Ssl3而不是Tls的SSLStream (将其更改为强制使用TLS)
如果要防止任何.NET代码发出的所有“ https”请求的SSL后备,请使用以下命令进行设置:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
注意:将其应用于AppDomain
,因此会影响在同一AppDomain中完成的所有HttpWebRequests
。
如果要对用于与服务器进行通信的WCF通道堆栈进行更明确/高级的控制(以便可以强制仅使用TLS传输级别安全性),则可以编写自己的StreamUpgradeProvider
。
(我“认为”您将通过使用TcpClient
和SSlStream
建立使用TLS的自己的Stream
……然后您将进行频道升级以使用它……(这可能是错误的)……或这是您缠绕Stream
给你的升级与SSlStream
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.