【发布时间】:2018-06-01 22:20:01
【问题描述】:
我需要使用 OpenSSL 在 .Net framework 4.0 中实现 TLS1.2。
我搜索了很多相同但无法找到代码 sn-p 用于使用 OpenSSL 设置 TLS1.2 安全协议而不是现有方式或将 OpenSSL 添加到其中的另一种可能方式
我的要求是:
- 使用 TLS1.2 与我们的 Web 服务通信(从 Web 服务发送请求并读取响应)
- 我们无法将机器升级到 .Net framework 4.5,它们有 framework .Net 4.0
当前的代码实现如下,我们允许/拥有 .Net framework 4.0 及更高版本
var request = (HttpWebRequest)WebRequest.Create(strHostUrl);
request.Method = "POST";
request.ContentType = "application/json";
request.UserAgent = "Java/1.7.0_51";
request.ContentLength = strRequest.Length;
request.Proxy = null;
request.KeepAlive = false;
request.Timeout = intTimeoutInMS;
request.ReadWriteTimeout = 3000;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
我们正在寻找使用 OpenSSL 来实现 TLS1.2 的选项。
有可能达到同样的效果吗?任何人都可以就上述问题提供一些帮助。
【问题讨论】:
-
@rene 感谢您的评论。我们已经尝试了这两个选项,但无法设置安全协议 Tls1.2 也无法升级到 .Net4.5,因此我们正在寻找使用 OpenSSL 来设置上述代码中的安全协议。是否可以通过任何可用的 Nuget 包使用 OpenSSL,并且任何人都已经使用过它。提前致谢。
-
你不能在网络堆栈中神奇地注入 OpenSSL。但是,如果您愿意使用 curl 而不是内置的 (Http)WebRequest 类,您将获得 OpenSSL 作为依赖项,这样可能对您很有效。您应该能够使用 curl 完成您现在使用 HttpWebRequest 所做的事情。
-
另一件事:您在调用 WebRequest.Create 之前 是否设置了 SecurityProtocol?在您建立服务点之后设置安全协议 有点无用,并且可能无法自行纠正,因为它们已被缓存,IIRC。您的代码示例表明了这一点,而我之前没有注意到。
标签: c# openssl .net-2.0 tls1.2