Ssl

是否可以在 Web 伺服器上不執行 HTTPS 的情況下進行客戶端證書身份驗證?

  • June 25, 2019

(請注意:這個問題是許多“你為什麼不試試呢?”問題之一。我當然會,但由於我沒有通過Google搜尋找到明顯的答案,我想我不妨讓它更容易稍後可能需要通過 ServerFault 詢問的人)

我的 Web 應用程序在某些負載均衡器後面通過 HTTPS 提供服務,並允許使用者在某些情況下使用客戶端證書進行身份驗證。現在有人問我是否願意將 SSL 加密/解密解除安裝到負載均衡器,以便我執行一個普通的 HTTP 站點(因此更容易調試和配置),而負載均衡器將為使用者。免費的額外 CPU 週期當然聽起來不錯,但是,我不相信我仍然能夠檢查使用者的客戶端證書。

是否可以在不執行完整的 HTTPS 站點的情況下使用客戶端證書?

這取決於您如何使用客戶端證書對使用者進行身份驗證和授權。您是否允許任何擁有由您認識的人簽名的證書的人,或者必須簽名並且 CN 等於特定的東西或等於組中的使用者?您目前的 Web 伺服器是否處理授權或您的應用程序是否處理?

執行此操作的典型方法是終止負載均衡器上的 SSL 連接。此負載均衡器將是“成熟的 HTTPS 站點”,需要配置為請求客戶端證書。然後,您的負載均衡器將執行檢查以查看證書是否由受信任的 CA 簽名。然後,負載均衡器會將來自 SSL 證書的詳細資訊(例如 DN)作為 HTTP 標頭添加到您的應用程序的純 HTTP 請求中。然後,您的應用程序將檢查這些 HTTP 標頭並根據應用程序和負載均衡器之間的信任授權使用者。我已經看到了所有主要負載均衡器的完成,例如 F5、ZXTM 甚至 Apache HTTP Server。

引用自:https://serverfault.com/questions/437705