Skip to content
All writing Part 02 of 06 · 一張遷移單背後的 PKI 與 TLS
Engineering · 1 min read

單向 TLS 與雙向 mTLS

兩者都是 TLS。唯一的結構差別是誰得出示憑證:單向只有伺服器出示,雙向連客戶端也得出示,於是兩端互相檢查。

兩者都是 TLS(加密加上身分驗證)。唯一的結構差別,就是誰得出示憑證

  • 單向 TLS(一般的 HTTPS):只有伺服器出示憑證。客戶端檢查伺服器,伺服器不會用密碼學去驗客戶端。你的瀏覽器會確認「這真的是銀行嗎」,但銀行不會用這種方式反過來確認是誰,你的身分是後面在應用層用登入處理的。
  • 雙向 TLS(mTLS):伺服器還會反過來跟客戶端要憑證,所以客戶端也得出示一張。兩端互相檢查,只要一邊的憑證不見了、過期了或不受信任,就直接拒絕連線(fail closed)。
單向 TLS 雙向 TLS(mTLS) 客戶端 伺服器 憑證 沒有憑證 只有伺服器證明自己 客戶端 伺服器 憑證 憑證 兩端都證明,任一邊憑證有問題就拒絕
單向 TLS 只問「伺服器是誰」,雙向 TLS 把這個問題問向兩邊。

要用哪一種,其實就從這條線推出來:

  • 對外、給瀏覽器連的端點,用單向 TLS,因為你不可能發一張憑證給每個訪客。
  • 服務對服務、兩端都是自己基礎設施的流量,用雙向 TLS,因為兩邊都拿得到憑證。附帶好處是:伺服器可以直接用憑證上的身分,決定這個客戶端被允許做什麼

這次遷移裡: 專案裡那兩個「SSL」剛好就切在這條線上。對外入口是單向 TLS(任何瀏覽器都連得到),而 Kafka 的 9093 埠是雙向 TLS(送資料的一方出示客戶端憑證,這正是讓 Kafka 伺服器能針對每張憑證管權限的關鍵)。

單向 TLS 只問「伺服器是誰」,雙向 TLS 把這個問題問向兩邊。


參考來源

延伸閱讀: 每一端出示的那張憑證,是由三個憑證檔組成的;對外入口走單向(Ingress 憑證終結),而 Kafka 的 9093 走雙向。回到總覽:一張遷移單背後的兩個 SSL

Tags #tls #security
// connect

Be brave | Be wise | Be grateful

21 BreakinCode

// elsewhere
LinkedInMedium (lang: en)Youtube
wh:~$William Hung· © 2026 Taipei · GMT+8 · Available for collaboration