首页 > 解决方案 > 与服务器的连接异常终止

问题描述

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

不久前,当我们的服务器从 SSL 更新到 TLS 时,我们有很多用户在使用 VBA Winhttp 和 REST API 时面临“连接异常终止”错误。我们使用现有的微软文章更新了Windows 7上用户的机器,问题得到了解决。最近,我遇到了一些相同错误的案例,其中补丁/更新之前已经应用过,或者它的应用程序没有解决问题。

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

我正在尝试找出在哪里查看或其他可能导致此问题的原因,以便我可以追踪它。任何想法/建议表示赞赏。

来源:更新以启用 TLS 1.1 和 TLS 1.2 作为 Windows 中 WinHTTP 中的默认安全协议

标签: excelvbarestwinhttp

解决方案


供未来有类似问题的访问者参考:

我一直在面临 Windows 7 客户端上的 TLS 问题,并根据下面总结的 Microsoft 文章进行了一轮修复:

步骤 1. 获取 Microsoft 更新 KB3140245: 下载相关(用户的 Windows 版本的 32 位或 64 位) Microsoft 安全协议更新并安装(如果尚未安装)。

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

然而,后来,我又遇到了另一轮类似的问题,这让我意识到微软页面上的修复工具不会设置所有的注册表项(缺少 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


推荐阅读