与服务器的连接异常终止

Connection with the server was terminated abnormally

我有一个 django-python 服务器,带有一个 VBA 前端连接,使用 winhttp 和 REST API。因此,在这种情况下,发送和接收的请求由我们控制并由我们自行决定。

不久前,当我们的服务器从 SSL 更新到 TLS 时,我们有很多用户在使用 VBA Winhttp 和 REST APIs 时面临 "connection terminated abnormally" 错误。我们使用现有的 Microsoft 文章更新 windows 7 上的用户机器,问题已解决。最近,我遇到了一些相同错误的案例,其中 patch/update 之前已经应用过,或者它的应用没有解决问题。

我在我们的服务器日志中根本看不到他们的传入流量(有些正在使用代理服务器),但甚至代理服务器 ip 也不存在。

我正试图找出要查找的位置或其他可能导致此问题的原因,以便我可以找到它。任何 idea/suggestion 表示赞赏。

来源:Update to enable TLS 1.1 and TLS 1.2 as default secure protocols in WinHTTP in Windows

供以后遇到类似问题的访客参考:

一段时间以来,我一直在 Windows 7 个客户端上遇到 TLS 问题,并根据下面总结的 Microsoft 文章进行了一轮修复:

步骤 1. 获取 Microsoft 更新 KB3140245: 下载相关(32 位或 64 位用户 Windows 版本) Microsoft Security Protocol Update 如果尚未安装,请安装。

步骤 2. 下载 Microsoft Easy Fix: 从以下位置下载 Microsoft“Easy Fix” Microsoft Support Article,并执行以将 TLS 1.1+ 设置为默认值。

然而,后来,我遇到了另一轮类似的问题,这让我意识到 Microsoft 页面上的修复工具不会设置所有注册表项(缺少 SChannel 注册表项)。因此,我设法将一些脚本放在一起,通过设置 Internet 选项和 SChannel 来实现完整修复。需要添加 TLS1.1/1.2 的 SChannel 注册表项以默认为 Winhttp 设置启用 TLS。

WinHttp 键:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp
==> DWORD DefaultSecureProtocols=0x00000A00 (32-bits and 64-bits)

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp
==> DWORD DefaultSecureProtocols=0x00000A00 (64-bits)

频道键:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client 
==> DWORD DisabledByDefault=0x00000000

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client
==> DWORD DisabledByDefault=0x00000000

全面修复:Microsoft 补丁未修复所有注册表条目以更新 WinHTTP 默认值并跳过 SChannel 条目。因此,如果两步修复 abpve 没有解决问题,这个 github 项目包含 powershell 脚本来下载和应用上面列出的所有必需的注册表修改,并且可能有助于更全面的一次性修复:Winttp-TLS