在SslStream中禁用不安全的重新协商

我在.NET中编写了一个使用SslStream支持HTTPS的Web服务器。

不幸的是,ssllabs.com输出以下关于我的实现的消息:

此服务器易受MITM攻击,因为它支持不安全的重新协商。

这链接到有关该漏洞的有趣博客条目 。

如何在.NET的SslStream禁用重新协商?

SslStream使用SChannel.dll。 您可以通过修改注册表来配置可用的算法:

http://support.microsoft.com/kb/245030

特别是,以下屏幕截图中突出显示的两个条目将禁止TLS重新协商:

注册表编辑器

它们被称为AllowInsecureRenegoClientsAllowInsecureRenegoServers ,都是DWORD值,都设置为0,位于HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

显然有一个你可以安装的修补程序也可以禁用不安全的TLS / SSL重新协商(仅适用于Windows XP / Windows2003服务器):

http://support.microsoft.com/kb/980436/en-us

对于window2012,它不能使用“AllowInsecureRenegoClients”和“AllowInsecureRenegoServers”设置为0。

我已将“AllowInsecureRenegoClients”更改为“0”和“DisableRenegoOnServer”为1并且正在为我工​​作。