C# OpenSSL实现在.Net Framework 4.0中达到TLS1.2

4
我需要在.Net框架4.0中使用OpenSSL来实现TLS1.2。我已经进行了大量搜索,但是找不到使用OpenSSL设置TLS1.2安全协议的代码片段,也没有其他将OpenSSL添加到.Net框架4.0中的可能方法。
我的要求是:
1. 使用TLS1.2与我们的Web服务通信(发送请求并读取Web服务的响应); 2. 我们无法将机器升级到.Net框架4.5,它们只有.Net框架4.0。
当前的代码实现如下,我们允许/拥有.Net框架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,而且升级到.Net 4.5也不可能,因此我们正在寻找使用OpenSSL来设置上述代码中的安全协议。是否有任何Nuget Package可以使用OpenSSL,并且是否已经有人使用过?先行致谢。 - Sujeet Saste
2
你不能在网络堆栈中神奇地注入OpenSSL。但是,如果你愿意使用curl而不是内置的(Http)WebRequest类,你将得到OpenSSL作为依赖项,这可能对你有好处。你应该能够用curl做你现在用HttpWebRequest做的事情。 - rene
还有一件事:在调用WebRequest.Create之前,您是否设置了SecurityProtocol?在建立ServicePoint之后设置安全协议有点无用,因为它们被缓存,可能无法纠正。您的代码示例似乎表明了这一点,我之前没有注意到。 - rene
1个回答

0

现在我已经在 .net framework 3.5 中进行了更改。请下载 OpenSSL 包装器(1.0.2 a 及以上版本),并将该项目包含到您的解决方案中,然后按照下面的链接操作。https://www.openssl.org/docs/man1.0.2/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接