【问题标题】:HttpWebRequest Cipher Suites SelectionHttpWebRequest 密码套件选择
【发布时间】:2015-07-18 20:23:55
【问题描述】:

在 C# 应用程序中通过 HttpWebRequest 建立 https 连接时,存储在服务器 (2008R2) 上的 SSL 握手中提供的可用密码套件列表在哪里?是注册表设置还是如何确定的?

C#代码很简单

HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(Uri);
WebReq.Method = "GET";
HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();

我遇到的问题是,当从服务器使用 IE 时,提供的密码列表与 C# 应用程序提供的密码列表不同(由wireshark 捕获。)因此,如果作为服务器失败,则基于 C# 的连接支持并希望使用 TLS_RSA_WITH_RC4_128_SHA,它不是由 C# 应用程序提供,而是由浏览器 SSL 握手提供。

在其他服务器上使用相同的代码表明 C# 应用程序在 SSL 握手中提供了 TLS_RSA_WITH_RC4_128_SHA,因此它使我相信该特定服务器上存在某些环境问题,但控制的位置和方式不是我的事已经找到了。

我会发布 wireshark 捕获的图像,以显示 C# 应用程序和 IE SSL 握手客户端 Hello Cipher 套件列表之间的区别,但我的代表点较低。

【问题讨论】:

    标签: c# ssl encryption httpwebrequest windows-server-2008-r2


    【解决方案1】:

    这里是注册表路径 SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers

    【讨论】:

    • 嗨,Daniel,已阅读指定位置允许您限制或明确指定要使用的密码。但是,注册表项没有指定密码,但 IE 和 .NET 库在尝试建立通信时提供了不同的密码列表。
    • 如果未指定任何内容,它将回退到默认列表。看看IISCrypto,这是一个很好的用户界面来配置客户端和服务器 TLS 设置。
    • Iggy - 你能解决你的问题吗?我也在寻找一种方法来禁用 DHE,从我的 .NET 客户端脚本加密 ECDHE,以便可以解密在服务器上捕获的数据包。
    猜你喜欢
    • 2020-11-14
    • 1970-01-01
    • 2014-01-28
    • 2013-07-17
    • 2011-05-06
    • 2012-09-03
    • 2018-09-18
    • 2015-10-27
    • 2021-05-02
    相关资源
    最近更新 更多