为了账号安全,请及时绑定邮箱和手机立即绑定

如何在.NET中禁用SSL回退并仅使用TLS进行出站连接?

如何在.NET中禁用SSL回退并仅使用TLS进行出站连接?

狐的传说 2019-08-30 17:08:11
我正在努力减轻我们对Poodle SSL 3.0 Fallback攻击的漏洞。我们的管理员已经开始禁用SSL,转而使用TLS进行服务器的入站连接。我们还建议我们的团队在其Web浏览器中禁用SSL。我现在正在查看我们的.NET代码库,它通过System.Net.HttpWebRequest启动与各种服务的HTTPS连接。我相信如果这些连接允许从TLS回退到SSL,则它们可能容易受到MITM攻击。这是我到目前为止所确定的。有人可以仔细检查一下以确认我是对的吗?这个漏洞是全新的,所以我还没有看到微软如何在.NET中缓解它的任何指导:System.Net.Security.SslStream类的允许协议(支持.NET中的安全通信)通过System.Net.ServicePointManager.SecurityProtocol属性为每个AppDomain全局设置。.NET 4.5中此属性的默认值是Ssl3 | Tls(虽然我找不到支持它的文档。)SecurityProtocolType是带有Flags属性的枚举,因此它是这两个值的按位OR。您可以使用以下代码行在您的环境中进行检查:Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol.ToString());在应用程序中启动任何连接之前Tls,应该将其更改为正好或者可能Tls12:System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls;重要提示:由于该属性支持多个按位标志,因此我假设SslStream 在握手期间不会自动回退到其他未指定的协议。否则,支持多个标志会有什么意义?TLS 1.0与1.1 / 1.2的更新:根据Google安全专家Adam Langley的说法,如果没有正确实施,TLS 1.0后来被发现容易受到POODLE的影响,因此您应该考虑专门转移到TLS 1.2。
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

在Windows窗体上,它可以在课程顶部放置


  static void Main(string[] args)

    {

        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

       //other stuff here

    }

因为windows是单线程的,所以你需要它,如果它是一个服务你需要把它放在服务的调用之上(因为没有告诉你将在哪个线程)。


using System.Security.Principal 

也需要。


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 599 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信