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

标签 c# .net ssl

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

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

This server is vulnerable to MITM attacks because it supports insecure renegotiation.

这链接到一个 interesting blog entry关于漏洞。

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

最佳答案

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

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

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

regedit

它们叫做AllowInsecureRenegoClientsAllowInsecureRenegoServers,都是DWORD值,都设置为0,位于HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\ channel

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

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

关于c# - 在 SslStream 中禁用不安全的重新协商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18509928/

相关文章:

c# - 匿名类型和泛型

c# - EntityFramework 6 现有数据库和新数据库的迁移?

c# - 我可以创建一个可以用花括号初始化的自定义类吗?

ssl - 当客户端在 bluemix 中时,通过 HTTPS 调用安全的 RESTful Web 服务

C# Linq问题

c# - 如何确定实体集合是否包含多个可能值之一?

.net - 32 位和 64 位 .net 框架最大内存有什么区别?

c# - 在 C# 中一次通过 X 线程的操作列表进行线程化

mod-rewrite - 为登录用户强制 ssl

ssl - javax.net.ssl.SSLHandshakeException : handshake_failure when using JMeter with SSL (JDK8)