【问题标题】:C# OpenSSL to achieve TLS1.2 in .Net Framework 4.0C# OpenSSL 在 .Net Framework 4.0 中实现 TLS1.2
【发布时间】:2018-06-01 22:20:01
【问题描述】:

我需要使用 OpenSSL 在 .Net framework 4.0 中实现 TLS1.2。

我搜索了很多相同但无法找到代码 sn-p 用于使用 OpenSSL 设置 TLS1.2 安全协议而不是现有方式或将 OpenSSL 添加到其中的另一种可能方式

我的要求是:

  1. 使用 TLS1.2 与我们的 Web 服务通信(从 Web 服务发送请求并读取响应)
  2. 我们无法将机器升级到 .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


【解决方案1】:

现在我已经在 .net framework 3.5 中进行了更改。请下载 OpenSSL wrapper (1.0.2 a) 及更高版本,并将该项目包含到您的解决方案中,并点击以下链接。 https://www.openssl.org/docs/man1.0.2/

【讨论】:

    猜你喜欢
    • 2014-04-17
    • 2011-02-27
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2015-02-28
    相关资源
    最近更新 更多