【发布时间】:2021-02-17 19:17:09
【问题描述】:
最近,我们在为客户安装我们的一个应用程序时遇到了问题。在安装过程中,应用程序需要向我们的云服务执行一些请求,我们意识到它无法建立 HTTPS 连接:TLS 握手失败了。经过一番研究,我们发现服务器是 Windows Server 2008,它不支持 TLS v1.2,这是连接到我们服务器所需的最低要求。有一些解决方法(例如this one),但都没有奏效。此外,由于客户政策,我们无法为该窗口安装任何更新。
在使用wireshark寻找解决方案时,我们注意到我们的程序尝试使用TLS v1.2进行连接并失败,但Chrome浏览器能够使用TLS v1.3连接到同一个云服务器,这甚至不是Windows Server 2008 支持。据此我们推断 Chrome 很可能使用自己的 TLS 堆栈来建立连接。
我想知道如果 Chrome 正在这样做,我们也应该能够这样做。该应用程序是在 .Net Core 中开发的,我在 Google 上搜索了很多关于如何执行此操作的信息,并且我发现了很多关于如何在 .Net Core 中配置 TLS 证书的信息,但没有关于用 TLS 堆栈替换的信息,比如说,OpenSSL 或其他。我确实知道这个is possible in Java,所以是否可以替换 .Net 核心中的 TLS 堆栈?
【问题讨论】:
-
可能的替代方案:您能否在特殊服务器上启用 1.1 仅供这些落后客户使用,受 IPaddr 和/或时间限制,如果可用,可能还包括登录/用户,例如他们必须通知您“我们在接下来的 2 小时内需要来自 192.168.0.1 的低质量连接”,而您只启用它?或者,如果您有人在现场提出(并认可)请求?
-
@dave_thompson_085 是的,我们想到了,但我们的感觉是用户拥有动态 IP,是什么让这个解决方案更难操作。此外,给人的感觉是我们会找到更多这样的“传统”客户,我们正在寻找更明确的解决方案。还是谢谢!
标签: ssl .net-core openssl tls1.2