0

我们有一个基于 Windows 的桌面胖客户端应用程序,前端基于 WPF+Telerik 构建,后端通信使用 WCF Web 服务。

现在通信是通过 SSL3.0 进行的

由于最近 SSL3.0 的安全问题,已决定在服务器端使用 TLS 1.2 或 TLS 1.1 来强制所有通信仅通过 TLS。

我们已经尝试使用 Fiddler 和 Wireshark 验证底层 Web 服务通信。我们可以看到 200 个“Tunnel to”请求是通过 TLS 发生的。

但是有没有其他方法可以交叉检查ThickClient App是否正在显式和隐式地使用TLS来处理WebService请求......?

Windows 在 2014 年 12 月 15 日的 Windows 更新中推送了 TLS 修补程序,并且在 Windows 2008 R2 应用服务器上安装了相同的修补程序。SSL3.0 尚未作为后备选项禁用,但未明确启用 TLS。但是 MS KB 文章说 TLS 将优先(TLS1.2>TLS1.1>TLS1.0>SSL3.0)

安全更新(知识库文章 KB2992611,随后是另一个更新 KB3018238)于 2014 年 12 月 9 日推送,并已于 2014 年 12 月 15 日通过 HP 每月补丁安装 <br> 请查看以下链接以获取有关安全补丁及其补丁的更多详细信息影响。有关 SSLv3.0 漏洞补丁的官方 Microsoft 更新 https://support2.microsoft.com/kb/2992611/en-us Link2: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

4

1 回答 1

1

如果您的意图是测试是否已在服务器上启用了 TLS/是否可以协商,那么您可以编写一些探测代码TcpClientSSLStream强制协商 TLS,并查看它是否实际上已协商。看:

如果您想防止 SSL 回退任何 .NET 代码发出的所有“https”请求,请使用以下命令进行设置:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

注意:将其应用于AppDomain,因此会影响HttpWebRequests在同一 AppDomain 中完成的任何操作。

如果您想对用于与服务器通信的 WCF 通道堆栈进行更显式/高级控制(因此您可以强制只使用 TLS 传输级别安全性),那么您可以编写自己的StreamUpgradeProvider.

(我“认为”你会建立你自己Stream的使用 TLS 通过使用TcpClientand SSlStream...然后你会升级频道以使用它......(可能是错误的)......或者是你用)将给定的内容包装Stream在升级中SSlStream

于 2015-02-13T16:27:22.233 回答