前言¶
在 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