在 Windows 中替换 OpenSSL 的默认 TLS 堆栈

Replace default TLS stack for OpenSSL in Windows

最近,我们在为客户安装我们的一个应用程序时遇到了问题。在安装过程中,应用程序需要对我们的云服务执行一些请求,我们意识到它无法建立 HTTPS 连接:TLS 握手失败。经过一番研究,我们发现服务器是 Windows Server 2008,它不支持 TLS v1.2,这是连接到我们服务器所需的最低要求。有一些解决方法(例如 this one),但其中 none 有效。此外,由于客户政策,我们无法安装任何更新 windows。

在使用 wireshark 寻找解决方案时,我们注意到我们的程序尝试使用 TLS v1.2 进行连接但失败了,但是 Chrome 浏览器能够使用 TLS v1 连接到同一云服务器。 3,Windows Server 2008 甚至不支持它。据此我们推断 Chrome 很可能使用它自己的 TLS 堆栈来建立连接。

我想知道如果 Chrome 正在这样做,我们也应该能够这样做。该应用程序是在 .Net Core 中开发的,我在谷歌上搜索了很多有关如何执行此操作的信息,并且我发现了很多有关如何在 .Net Core 中配置 TLS 证书的信息,但是 none 关于替换TLS 堆栈,例如,OpenSSL 或其他。我确实知道这个 is possible in Java,所以 是否可以替换 .Net 核心中的 TLS 堆栈?

.NET Core 本身不允许您插入自己的加密堆栈。

您以 Bouncy Castle 为例 Java 让您使用备用加密堆栈;有 a port of Bouncy Castle to C#/.NET as well.

他们的源代码有一个演示如何使用 Bouncy Castle 编写 TLS 客户端的测试用例:

https://github.com/bcgit/bc-csharp/blob/master/crypto/test/src/crypto/tls/test/TlsClientTest.cs