文件

用戶端嚴格驗證

預設情況下,用戶端對每個連線都加密,但不驗證另一端是誰——與瀏覽器接受自簽憑證一樣屬於「首次使用即信任」。嚴格驗證改變了這一點:用戶端用它提供的 Root CA 檢查伺服器憑證,只有憑證鏈、有效期和 SAN 全部通過才允許連線。這使得針對連線的中間人攻擊實際上無從下手,代價只是多一步手工作業:把伺服器的 Root CA 交給用戶端。

在哪裡設定

嚴格驗證在用戶端的伺服器編輯面板中按伺服器逐一設定,與位址、密鑰並列:

  1. Root CA 公鑰憑證(PEM) — 用於填寫伺服器 Root CA 公鑰憑證的多行輸入框;
  2. 嚴格驗證 CA、有效期與 SAN,失敗時拒絕連線 — 只有填入 CA 後才可勾選。
桌面用戶端的伺服器編輯面板:Root CA 公鑰憑證(PEM)多行輸入框,下方是嚴格驗證核取方塊

把 Root CA 交給用戶端

兩種方式,來源相同(伺服器的 憑證與 TLS 頁面——見「網域與 SAN 管理」頁面):

  • 複製貼上 — 在 Web 介面點擊 複製 Root CA,把 PEM 貼到用戶端的 Root CA 公鑰憑證(PEM) 欄位;
  • 匯入分享串 — 用戶端產生的分享串會在位址和密鑰之外一併內嵌 Root CA。匯入這樣的分享會自動預填 CA 欄位,接收方只需勾選嚴格驗證。

CA 對每個用戶端都相同,且憑證續簽不會改變它——每台伺服器設定一次即可。

嚴格模式檢查什麼

勾選之後,到該伺服器的每個連線都必須出示滿足以下條件的憑證:

  1. 憑證鏈能追溯到所設定的 Root CA——由其他任何 CA 簽發的憑證都會被拒絕;
  2. 在有效期內——已過期或尚未生效的憑證會被拒絕;
  3. SAN 與你連線所用的位址匹配——為其他名稱簽發的憑證會被拒絕。

任何一項檢查失敗,連線都會被拒絕,並給出說明是哪一項失敗的錯誤。不勾選(或未填 CA)時,連線仍然加密,但跳過這些檢查。

核對指紋

信任 CA 之前,先確認拿到的是真的:憑證與 TLS 頁面顯示 Root CA 的 SHA-256 指紋。把它與即將貼上的 PEM(或分享串中內嵌的 PEM)比對。如果不一致,不要啟用嚴格驗證——改用可信管道重新取得 CA。

常見失敗原因

  • SAN 不匹配 — 你連線所用的名稱或 IP 不在憑證裡。在伺服器上新增它(見「網域與 SAN 管理」頁面)並重新簽發;
  • 憑證過期或尚未生效 — 伺服器時鐘不準,或葉子憑證續簽失敗。在 Web 介面查看憑證狀態;
  • 不是所設定 CA 簽發的 — 欄位中的 CA 屬於另一台伺服器,或連線正被攔截。先比對指紋再繼續。