文件
用戶端嚴格驗證
預設情況下,用戶端對每個連線都加密,但不驗證另一端是誰——與瀏覽器接受自簽憑證一樣屬於「首次使用即信任」。嚴格驗證改變了這一點:用戶端用它提供的 Root CA 檢查伺服器憑證,只有憑證鏈、有效期和 SAN 全部通過才允許連線。這使得針對連線的中間人攻擊實際上無從下手,代價只是多一步手工作業:把伺服器的 Root CA 交給用戶端。
在哪裡設定
嚴格驗證在用戶端的伺服器編輯面板中按伺服器逐一設定,與位址、密鑰並列:
Root CA 公鑰憑證(PEM)— 用於填寫伺服器 Root CA 公鑰憑證的多行輸入框;嚴格驗證 CA、有效期與 SAN,失敗時拒絕連線— 只有填入 CA 後才可勾選。
把 Root CA 交給用戶端
兩種方式,來源相同(伺服器的 憑證與 TLS 頁面——見「網域與 SAN 管理」頁面):
- 複製貼上 — 在 Web 介面點擊
複製 Root CA,把 PEM 貼到用戶端的Root CA 公鑰憑證(PEM)欄位; - 匯入分享串 — 用戶端產生的分享串會在位址和密鑰之外一併內嵌 Root CA。匯入這樣的分享會自動預填 CA 欄位,接收方只需勾選嚴格驗證。
CA 對每個用戶端都相同,且憑證續簽不會改變它——每台伺服器設定一次即可。
嚴格模式檢查什麼
勾選之後,到該伺服器的每個連線都必須出示滿足以下條件的憑證:
- 憑證鏈能追溯到所設定的 Root CA——由其他任何 CA 簽發的憑證都會被拒絕;
- 在有效期內——已過期或尚未生效的憑證會被拒絕;
- SAN 與你連線所用的位址匹配——為其他名稱簽發的憑證會被拒絕。
任何一項檢查失敗,連線都會被拒絕,並給出說明是哪一項失敗的錯誤。不勾選(或未填 CA)時,連線仍然加密,但跳過這些檢查。
核對指紋
信任 CA 之前,先確認拿到的是真的:憑證與 TLS 頁面顯示 Root CA 的 SHA-256 指紋。把它與即將貼上的 PEM(或分享串中內嵌的 PEM)比對。如果不一致,不要啟用嚴格驗證——改用可信管道重新取得 CA。
常見失敗原因
SAN 不匹配— 你連線所用的名稱或 IP 不在憑證裡。在伺服器上新增它(見「網域與 SAN 管理」頁面)並重新簽發;憑證過期或尚未生效— 伺服器時鐘不準,或葉子憑證續簽失敗。在 Web 介面查看憑證狀態;不是所設定 CA 簽發的— 欄位中的 CA 屬於另一台伺服器,或連線正被攔截。先比對指紋再繼續。