雙向 TLS (mTLS) 是一種驗證類型,即連線雙方使用 TLS 通訊協定相互驗證。
閱讀本文後,您將能夠:
複製文章連結
相互 TLS 簡稱 mTLS,是一種相互驗證的方法。mTLS 透過驗證網路連線兩端的各方都擁有正確的私密金鑰來確保他們都是所聲稱的身分。他們各自的 TLS 憑證中的資訊提供了額外的驗證。
mTLS 通常被用於 Zero Trust 安全框架*,以驗證組織內的使用者、裝置和伺服器。它也可以協助保持 API 的安全<。
*Zero Trust 意味著預設情況下不信任任何使用者、裝置或網路流量,這種方法有助於消除許多安全漏洞。
Transport Layer Security (TLS) 是網際網路上廣泛使用的一種加密通訊協定。TLS 的前身是 SSL,在用戶端-伺服器連線中對伺服器進行驗證,並對用戶端和伺服器之間的通訊進行加密,以便外部各方無法窺視通訊。
關於 TLS 的運作原理,需要瞭解三件重要的事情:
TLS 使用一種叫做公開金鑰加密的技術運作,它依賴於一對金鑰,即公開金鑰和私密金鑰。使用公開金鑰加密的任何內容都只能用私密金鑰解密。
因此,一個伺服器如果解密了用公開金鑰加密的資訊,就證明它擁有私密金鑰。任何人都可以透過查看網域或伺服器的 TLS 憑證來檢視公開金鑰。
TLS 憑證是一個資料檔案,其中包含用於驗證伺服器或裝置身分的重要資訊,包括公開金鑰、憑證簽發者聲明(TLS 憑證由憑證授權單位簽發)以及憑證的到期日期。
TLS 交握是驗證 TLS 憑證和伺服器是否擁有私密金鑰的過程。TLS 交握還會確定交握完成後如何進行加密。
通常在 TLS 中,伺服器擁有具有 TLS 憑證和公開金鑰/私密金鑰對,而用戶端則沒有。典型的 TLS 過程的運作方式如下:
但是,在 mTLS 中,用戶端和伺服器都有一個憑證,並且雙方都使用其公開金鑰/私密金鑰對進行驗證。與常規 TLS 相比,mTLS 中還有額外步驟來驗證雙方(額外步驟以粗體顯示):
實作 mTLS 的組織充當自己的憑證授權單位。這與標準 TLS 形成鮮明對比,在標準 TLS 中,憑證授權單位是一個外部組織,負責檢查憑證擁有者是否合法擁有關聯的網域(瞭解 TLS 憑證驗證)。
mTLS 需要「根」TLS 憑證,這使組織能夠成為自己的憑證授權單位。授權用戶端和伺服器使用的憑證必須與此根憑證相對應。根憑證是自我簽署的,這意味著組織自己建立它。(此方法不適用於公用網際網路上的單向 TLS,因為必須由外部憑證授權單位簽發這些憑證。
mTLS 有助於確保用戶端和伺服器之間的流量在兩個方向上都是安全和可信的。這為登入到組織網路或應用程式的使用者提供了額外的安全層。它還可以驗證與不遵循登入過程的用戶端裝置的連線,如物聯網 (IoT) 裝置。
mTLS 可防止各種攻擊,包括:
對於日常用途,單向驗證可提供足夠的保護。TLS 在公用網際網路上的目標是:1)確保人們不會造訪詐騙網站,2)在私人資料通過構成網際網路的各種網路時保持安全和加密,以及 3)確保資料在傳輸過程中不會被修改。單向 TLS(其中用戶端僅驗證伺服器的身分)就足以實現這些目標。
此外,將 TLS 憑證分發到所有終端使用者裝置將非常困難。產生、管理和驗證為此所需的數十億憑證幾乎是不可能的任務。
但在較小的規模上,mTLS 對單個組織非常有用且非常實用,尤其是當這些組織採用 Zero Trust 方法來確保網路安全時。由於 Zero Trust 方法預設不信任任何使用者、裝置或請求,因此組織必須能夠在每次嘗試存取網路中的任何時間對每個使用者、裝置和請求進行驗證。mTLS 透過驗證使用者和驗證裝置來幫助實現這一點。
Cloudflare Zero Trust 使用 mTLS 實現 Zero Trust 安全性。Cloudflare API Shield 還使用 mTLS 來驗證 API 端點,確保未經授權的各方都無法傳送潛在的惡意 API 請求。瞭解如何使用 Cloudflare 實作 mTLS。