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

C# 在SslStream中禁用不安全的重新协商,c#,.net,ssl,C#,.net,Ssl,我在.NET中编写了一个Web服务器,通过使用SslStream支持HTTPS 不幸的是,ssllabs.com输出了关于我的实现的以下消息: 此服务器易受MITM攻击,因为它支持不安全的重新协商 此链接指向有关该漏洞的详细信息 如何在.NET的SslStream中禁用重新协商?SslStream在后台使用SChannel.dll。您可以通过修改注册表来配置可用的算法: 特别是,以下屏幕截图中突出显示的两个条目将不允许TLS重新协商: 它们被称为AllowInSecureReneGoClie

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

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

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

此链接指向有关该漏洞的详细信息


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

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

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

它们被称为
AllowInSecureReneGoClient
AllowInsecureRenegoServers
,都是DWORD值,都设置为0,位于
HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

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


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


我已更改为AllowInsecureRenegoClients“作为0,DisableRenegoOnServer”作为1,并正在为我工作。

修补程序仅适用于Windows XP和Windows Server 2003。我的解决方案是修改注册表。谢谢!