dsh-tls-trust-anchor:按主机放行 TLS 证书校验

前言

在 DeepSeek Harness(DSH)里对接私有模型网关时,若入口使用自签证书或内网 CA,聊天侧常见的是连接失败而非明确的配置错误。系统浏览器或本机其他 CLI 有时能连上,Harness 里却报证书校验类错误。根因之一是 Node.js 使用自带的 CA 存储,不读取 macOS 或 Windows 的系统信任库;Provider 配置里也没有「信任这张证书」的开关。dsh-tls-trust-anchor 在 Harness 设置中增加「Certificate trust」区块,让你按主机名决定是否跳过该校验,从而在可控前提下连上自签网关。

这是什么

dsh-tls-trust-anchor 由 spark-ai-boy 维护,npm 包名为 dsh-tls-trust-anchor,源码仓库为 spark-ai-boy/dsh-tls-trust-anchor。它是 DSH 的第三方插件:不改动系统证书库,只在 Harness 运行时(及其按策略派生的子进程)对名单中的主机放宽 TLS 对等方身份校验,其余主机仍走默认校验。

社区目录页:SkillHub 插件条目。目录为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,安装前宜自行查看源码与 MIT 许可证。

要解决什么问题

典型报错形态包括:

UNABLE_TO_VERIFY_LEAF_SIGNATURE | unable to verify the first certificate

自签叶子证书(Basic Constraints: CA:FALSE)在默认链校验下无法充当信任锚;Node 也未通过 Provider 暴露「接受不完整链」之类选项。该插件不做全局关验证,而是按主机在 tls.connect 层对匹配项设置 rejectUnauthorized: false,加密仍进行,但不再证明对端身份——因此只适合你也信任其网络路径的场景。

核心功能

  1. 按主机开关:在设置里添加形如 newapi.example.com 的主机,可开启跳过校验,也可删除条目;仅该主机生效。
  2. 其余连接不变:过期、未知根、主机名不匹配等在其他主机上仍会被拒绝;不写入系统证书存储。
  3. 子进程一致:插件激活后向 NODE_OPTIONS 追加 --require 预加载,Harness 拉起的 Node 子进程(例如独立运行的网关代理)读取同一份名单并应用相同策略。
  4. 持久化与即时生效:名单保存在 ~/.dsh/tls-trust/trusted-hosts.json,重启后仍在;Host 侧 patch tls.connect,下一请求即生效,无需重启 Harness。
  5. 设置 UI:Client 注册 settings.section,展示列表、开关与删除操作。

实现上 Host(index.js)提供 tlsTrust Remote 服务;预加载脚本 src/host/preload.cjs 负责子进程;状态与主机名规范化在 src/host/state.js。

安装与启用

要求

  • DeepSeek Harness 0.2.x(桌面或 web profile),且已允许安装第三方插件;package.json 中 engines.dsh 为 >=0.2.1-rc.5。
  • 已知要信任的模型 API 主机名(与 Provider 里配置的 baseURL 一致)。

安装来源

Harness 插件管理器可从 GitHub 或 npm 安装:

  • GitHub:https://github.com/spark-ai-boy/dsh-tls-trust-anchor
  • npm:dsh-tls-trust-anchor(当前发布版本见 npm 徽章,资料中 package 版本为 0.1.1)

步骤

  1. 打开 Settings → Plugins,从上述仓库或 npm 包安装 bundle。
  2. 打开 Settings → Models,添加 Provider:填写 baseURL、API 类型与密钥。baseURL 填 API 根地址,例如 https://newapi.example.com,不要带 /v1——客户端会自行拼接 /v1/messages 等路径。
  3. 打开 Settings → Certificate trust,输入主机名,点击 Add host;默认开关为开启(跳过校验)。
  4. 回到对话界面选择该模型进行请求。

插件在 DSH 进程权限下运行,安装前请核对仓库代码与许可条款。

典型用法流程

下面是一条可复现的链路,与 README 一致:

  1. 私有网关 https://newapi.example.com 使用自签证书,浏览器外其它工具可能信任,但 Harness 默认校验失败。
  2. 在 Models 中配置 Provider,baseURL 为 https://newapi.example.com。
  3. 在 Certificate trust 中将 newapi.example.com 加入名单并保持「跳过校验」开启。
  4. 再次发起对话;仅该主机的 TLS 校验被放宽,其它域名不受影响。

从名单移除主机后,下一请求即恢复对该主机的标准校验。

适用场景与安全注意

适合:你控制的私有 LLM 网关、实验环境、暂时无法签发公网可信证书的内网入口,且接受「加密但不验证身份」的风险权衡。

不适合:不可信网络上的任意 HTTPS 端点;能使用正规签发证书时应优先用证书,而非长期依赖跳过校验。

安全要点(摘自上游说明):

  • 跳过校验后连接仍加密,但不证明对端是谁;仅用于你控制的证书。
  • 设计为窄名单:其它主机上的版本问题、过期证书、未知根仍会被拒绝。

限制(使用时需知晓):

  • Host 依赖 @deepseek-ai/dsh-typert-protocol,由 Harness 提供,不随包捆绑。
  • 子进程仅在插件激活之后启动时继承策略;已存在的长驻进程需重启一次。
  • 无 Typert 生成物时,Remote 参数名须与 Host 方法签名及 client.js 描述符完全一致。

结尾

dsh-tls-trust-anchor 把「仅对指定模型网关主机跳过 TLS 证书校验」收敛到 Harness 设置里的一条名单,避免为整张自签证书去改系统信任库或全局关闭 Node 校验。查阅细节与更新请以仓库 README(含 中文说明)为准。

  • 目录页:https://www.skillhub.cn/plugins/spark-ai-boy/dsh-tls-trust-anchor
  • GitHub:https://github.com/spark-ai-boy/dsh-tls-trust-anchor
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye