我正在尝试在产品服务器上使用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
}
答案 0 :(得分:0)
与服务器一样,浏览器(IE / Edge / Opera / Safari / Chrome / Firefox等)将具有其支持的密码套件列表。
在SSL / TLS协商期间,浏览器和服务器将选择它们都支持的密码套件。
简而言之,您的C#客户端将需要支持多个密码套件,以便它可以与服务器协商并找到它们都支持的东西。