【问题标题】:HTTP C# client: Could not create SSL/TLS secure channelHTTP C# 客户端:无法创建 SSL/TLS 安全通道
【发布时间】:2018-02-01 10:12:41
【问题描述】:

我正在尝试使用仅适用于 HTTPS 的 HTTP API。

发送请求时出现以下错误“WebException:请求已中止:无法创建 SSL/TLS 安全通道。”

我的项目面向 .NET Framework 4.7.1

我可以使用 Firefox 连接到服务器,但我必须添加一个安全例外,我可以导出 .crt 并安装到我的 windows 商店和 VS 项目中。

ServicePointManager.ServerCertificateValidationCallback += 
    (message, cert, chain, errors) => true;
ServicePointManager.SecurityProtocol = 
    SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | 
    SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

handler = new HttpClientHandler();
client = new HttpClient(handler);

client.DefaultRequestHeaders.Add("Connection", "keep-alive");
client.DefaultRequestHeaders.Add("Cache-Control", "max-age=0");
client.DefaultRequestHeaders.Add("username", user);
client.DefaultRequestHeaders.Add("password", password);

handler.ClientCertificateOptions = ClientCertificateOption.Manual;

//handler.ClientCertificates.Add(new X509Certificate(@"./OnSSI.crt"));
handler.ServerCertificateCustomValidationCallback += 
    (message, cert, chain, errors) => true;

编辑:关于证书的更多信息来自 firefox:

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, 128bit keys, TLS1.2
PKCS #1 MD5 With RSA Encryption

EDIT2:我认为主要问题是回调验证函数没有被处理程序调用,我在 return true 参数处添加了一个断点并且它没有命中。

EDIT3:它似乎适用于 .NET core 2.0,我仍在寻找 .NET Framework 4.7 中的解决方案

EDIT4:我使用代码创建了一个 .NET 标准库,当我使用 .NET 框架应用程序启动时,我得到了错误,而我没有使用 .NET 核心应用程序

【问题讨论】:

  • 您是否使用代理连接到 Internet?您最终是否需要使用某些客户端证书进行连接?注释代码的相关性如何?
  • 服务器在我的本地网络上,没有代理,这是一个192.168.0.X ip(我也有一个192.168.0 ip)。我不知道我是否需要在客户端使用证书,但我无法控制服务器产品。注释代码是我在其他 stackoverflow 主题上找到的一些代码,我已经尝试过但没有一个有效。
  • 为什么你的一半代码在 cmets 中?你能更努力地格式化你的代码吗?
  • 这两个注释块是我试图让它工作但没有成功的代码,我想向它们展示你可以看到我尝试过的内容。但是,由于我的 EDIT2,我删除了我的第二个 bloc,但我认为第一个 bloc 有必要保留,因为我可以证明我尝试使用 .crt 文件。

标签: c# ssl


【解决方案1】:

它只能使用 Tls 值设置 SecurityProtocol 变量,如下所示:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

基本上,.NETCORE 似乎通过选择本机 Tls 版本协议来隐式执行此操作。 .NETFRAMEWORK 不太直观(可移植性要求较低)。

【讨论】:

    猜你喜欢
    • 2013-04-07
    • 2022-01-02
    • 2017-04-20
    • 1970-01-01
    • 2021-12-13
    • 2014-12-26
    • 2017-02-10
    • 2017-08-22
    • 2016-08-03
    相关资源
    最近更新 更多