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
羽毛球分组比赛记分
小程序二维码

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

小夜