WebRequest指定SSL / TLS密码

时间:2018-07-06 14:54:31

标签: c# ssl tls1.2

我正在尝试在产品服务器上使用Https进行请求。

由于我们将tls1.2与TLS_RSA_WITH_AES_128_GCM_SHA256密码一起使用,因此它可以在开发环境中工作

问题是我的产品服务器由于它很弱(不支持完全转发保密)而已禁用TLS_RSA_WITH_AES_128_GCM_SHA256密码

我不想重新启用密码,但希望我的C#客户端能够使用该密码。

使用https://www.howsmyssl.com/a/check 在Chrome和我的产品环境中的C#客户端上 证明chrome仍然认为chrome仍然可以使用TLS_RSA_WITH_AES_128_GCM_SHA256,甚至认为我的c#客户端无法使用它。

SSL握手失败,因为我无法找到与服务器通用的密码。

我使用的Aslo记录。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;

谢谢您的支持。

我使用的代码示例。

        WebRequest request = WebRequest.Create("https://SomeServer.com");
        try
        {
            using (WebResponse response = request.GetResponse())
            using (Stream dataStream = response.GetResponseStream())
            using (StreamReader reader = new StreamReader(dataStream))
            {

                //Log Request reader.ReadToEnd());
            }

        }
        catch (WebException ex)
        {
           //Log
        }

1 个答案:

答案 0 :(得分:0)

与服务器一样,浏览器(IE / Edge / Opera / Safari / Chrome / Firefox等)将具有其支持的密码套件列表。

在SSL / TLS协商期间,浏览器和服务器将选择它们都支持的密码套件。

简而言之,您的C#客户端将需要支持多个密码套件,以便它可以与服务器协商并找到它们都支持的东西。