前言¶
在 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,加密仍进行,但不再证明对端身份——因此只适合你也信任其网络路径的场景。
核心功能¶
- 按主机开关:在设置里添加形如
newapi.example.com的主机,可开启跳过校验,也可删除条目;仅该主机生效。 - 其余连接不变:过期、未知根、主机名不匹配等在其他主机上仍会被拒绝;不写入系统证书存储。
- 子进程一致:插件激活后向
NODE_OPTIONS追加--require预加载,Harness 拉起的 Node 子进程(例如独立运行的网关代理)读取同一份名单并应用相同策略。 - 持久化与即时生效:名单保存在
~/.dsh/tls-trust/trusted-hosts.json,重启后仍在;Host 侧 patchtls.connect,下一请求即生效,无需重启 Harness。 - 设置 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)
步骤¶
- 打开 Settings → Plugins,从上述仓库或 npm 包安装 bundle。
- 打开 Settings → Models,添加 Provider:填写
baseURL、API 类型与密钥。baseURL填 API 根地址,例如https://newapi.example.com,不要带/v1——客户端会自行拼接/v1/messages等路径。 - 打开 Settings → Certificate trust,输入主机名,点击 Add host;默认开关为开启(跳过校验)。
- 回到对话界面选择该模型进行请求。
插件在 DSH 进程权限下运行,安装前请核对仓库代码与许可条款。
典型用法流程¶
下面是一条可复现的链路,与 README 一致:
- 私有网关
https://newapi.example.com使用自签证书,浏览器外其它工具可能信任,但 Harness 默认校验失败。 - 在 Models 中配置 Provider,
baseURL为https://newapi.example.com。 - 在 Certificate trust 中将
newapi.example.com加入名单并保持「跳过校验」开启。 - 再次发起对话;仅该主机的 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