我在.NET中编写了一个支持HTTPS的Web服务器,使用了SslStream。不幸的是,ssllabs.com对我的实现输出以下消息:
该服务器容易受到MITM攻击,因为它支持不安全的重新协商。
这链接到一个有关漏洞的有趣博客文章。
如何在.NET的SslStream中禁用重新协商?
该服务器容易受到MITM攻击,因为它支持不安全的重新协商。
这链接到一个有关漏洞的有趣博客文章。
如何在.NET的SslStream中禁用重新协商?
SslStream使用SChannel.dll作为底层实现。您可以通过修改注册表来配置可用的算法:
http://support.microsoft.com/kb/245030
特别是,以下截图中突出显示的两个条目将禁止TLS重新协商:AllowInsecureRenegoClients
和AllowInsecureRenegoServers
,都是DWORD值,都设置为0,位于HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
中。显然,你可以安装一个热修复程序来禁用不安全的TLS/SSL重协商(仅适用于Windows XP / Windows2003服务器)。
对于window2012,当"AllowInsecureRenegoClients"和"AllowInsecureRenegoServers"都设置为0时,它无法正常工作。
我将"AllowInsecureRenegoClients"更改为0,"DisableRenegoOnServer"更改为1,现在可以正常工作。