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

Tim*_*mwi 5 .net c# ssl

我在 .NET 中编写了一个通过使用 .NET 支持 HTTPS 的网络服务器SslStream

\n\n

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

\n\n
\n

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

\n
\n\n

此链接指向有关该漏洞的有趣博客文章

\n\n

如何禁用 .NET\xe2\x80\x99s 中的重新协商SslStream

\n

Eri*_*oen 5

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