excel - 与服务器的连接异常终止
问题描述
我有一个 django-python 服务器,它带有一个使用 winhttp 和 REST API 连接的 VBA 前端。因此,在这种情况下,发送和接收的请求由我们控制并由我们自行确定。
不久前,当我们的服务器从 SSL 更新到 TLS 时,我们有很多用户在使用 VBA Winhttp 和 REST API 时面临“连接异常终止”错误。我们使用现有的微软文章更新了Windows 7上用户的机器,问题得到了解决。最近,我遇到了一些相同错误的案例,其中补丁/更新之前已经应用过,或者它的应用程序没有解决问题。
我在我们的服务器日志上根本看不到他们的传入流量(有些正在使用代理服务器),但甚至代理服务器 ip 也不存在。
我正在尝试找出在哪里查看或其他可能导致此问题的原因,以便我可以追踪它。任何想法/建议表示赞赏。
解决方案
供未来有类似问题的访问者参考:
我一直在面临 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
推荐阅读
- node.js - 更新子文档中的数组 - mongoose mongodb
- loopbackjs - Loopback 4:通过 POST 方法上传 multipart/form-data
- python - RabbitMQ 错误 530 找不到 pika 的虚拟主机
- multithreading - GHC 在存在线程的情况下包含标准输出,但 GHCi 不包含
- dart - dart build:需要将应用程序中的资产注入依赖包
- php - 是否有任何可用的解决方案支持 OpenLDAP 中的 2FA 进行用户身份验证?
- ruby-on-rails - 在条件检查实例时,枚举中的空字符串键导致列更新
- css - 在 django admin 中鼠标悬停时放大 django 缩略图
- java - 我无法使用 java 通过 ssh-tunnel 连接到数据库。
- javascript - 使用 jQuery/JavaScript 在 Firebase 中嵌套数组