Windows Hub 连接 OpenClaw TLS Gateway 报 Transport Error 排查与修复

我想静静2026-08-21Windows6

问题现象

Windows Hub 通过 wss:// 连接局域网内 OpenClaw Gateway 时,报 Transport error,无法建立连接。

环境

  • Debian 服务器:192.168.0.9,运行 OpenClaw Gateway,端口 18789,TLS 已开启(自签证书)
  • Windows PC:Windows 10 LTSC 2021(21H2),安装 OpenClaw Windows Hub
  • 网络:同一局域网(192.168.0.x)

根本原因

排查发现是 TLS 协议版本不兼容

  • OpenClaw Gateway 硬编码 minVersion: "TLSv1.3",只接受 TLS 1.3 连接
  • Windows 10 19044(21H2)的 schannel 对 TLS 1.3 支持不完整,即使手动启用注册表和 Internet 选项中的 TLS 1.3(实验),curl 测试仍报 SEC_E_ALGORITHM_MISMATCH
  • Windows 10 LTSC 2021 无法安装 TLS 1.3,只能降级服务端 TLS 版本至 1.2

排查过程

步骤操作结果
1导入自签证书到 Windows 受信任根证书颁发机构证书信任问题解决,但连接仍失败
2重新生成包含 IP SAN 的证书(IP.1 = 192.168.0.9)证书验证通过,但连接仍失败
3curl.exe -k -v https://192.168.0.9:18789 测试SEC_E_ILLEGAL_MESSAGE,握手失败
4Debian 上用 openssl s_client -tls1_2 测试tlsv1 alert protocol version,确认网关只接受 TLS 1.3
5在 OpenClaw 源码中搜索找到 gateway-D7pGc7Ge.jsminVersion: "TLSv1.3"

解决方案

修改 OpenClaw 的 TLS 最低版本为 1.2:

# 1. 备份原文件
cp /root/.nvm/versions/node/v24.19.0/lib/node_modules/openclaw/dist/gateway-D7pGc7Ge.js    /root/.nvm/versions/node/v24.19.0/lib/node_modules/openclaw/dist/gateway-D7pGc7Ge.js.bak

# 2. 修改 minVersion
sed -i 's/minVersion: "TLSv1.3"/minVersion: "TLSv1.2"/'    /root/.nvm/versions/node/v24.19.0/lib/node_modules/openclaw/dist/gateway-D7pGc7Ge.js

# 3. 验证修改
grep -n 'minVersion' /root/.nvm/versions/node/v24.19.0/lib/node_modules/openclaw/dist/gateway-D7pGc7Ge.js

# 4. 重启 OpenClaw
pkill -f openclaw

注意事项

  • 升级后需重新修改:OpenClaw 升级后会覆盖修改,升级后需重新执行上述 sed 命令
  • 证书需包含 IP SAN:否则 Windows 会因证书与 IP 不匹配而拒绝连接。生成证书时需在配置中包含:
[alt_names]
IP.1 = 192.168.0.9
  • 证书导入位置:Windows 的「受信任的根证书颁发机构」(Cert:\LocalMachine\Root),不是当前用户
  • 配置文件证书路径:注意 OpenClaw 配置(openclaw.json)中指定的实际证书路径,本文案例中是 /root/.openclaw/tls/server.crt,与证书生成脚本输出路径可能不一致

涉及的证书路径(本文案例)

路径用途
/root/.openclaw/tls/server.crtOpenClaw 实际加载的证书(配置中指定)
/root/.openclaw/tls/server.keyOpenClaw 实际加载的私钥
/root/.openclaw/gateway/tls/gateway-cert.pem另一处证书位置(非实际使用)

验证命令

# Debian 上验证 TLS 1.2 可连接
openssl s_client -connect 192.168.0.9:18789 -tls1_2

# Windows 上验证 TLS 1.2 可连接
curl.exe --tlsv1.2 -k -v https://192.168.0.9:18789

如果 curl 返回 HTTP 200 和 HTML 内容,说明 TLS 握手成功,Windows Hub 即可正常连接。

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。