6

我正在爲使用Tomcat的項目設置證書認證。它適用於命令行客戶端,如cURL。Chrome瀏覽器如何知道哪個客戶端證書提示進入網站?

我在Chrome瀏覽器中安裝了很多客戶端證書。有些用於連接到我的網站,其他用於不同的目的,不涉及我的項目。

每當我連接到我的網站時,Chrome都會提供一個客戶端證書列表供您選擇。這些正是我安裝的證書,而不是其他人。我的問題是:

  1. Chrome如何知道哪些客戶端證書用於選擇網站?
  2. Tomcat將這些客戶端證書存儲在其信任存儲中。在 SSL hanshake期間,Tomcat將請求客戶端證書。是否 請求知道其信任的 商店中的某些特定證書,以便Chrome知道要顯示的內容?

回答

8

客戶端證書身份驗證在瀏覽器實現的SSL/TLS協議的握手階段被規定。

  1. 如果服務器需要一個客戶端證書認證(這是 可選),將消息發送到客戶端與接受 證書頒發機構(CA)的列表。如果服務器接受任何 證書,則可以爲無效。

  2. 客戶端選擇客戶端密鑰庫中安裝的證書,這些證書由任何這些CA頒發,並將列表呈現給用戶。對於Chrome瀏覽器,瀏覽器會從操作系統密鑰庫中選擇用戶安裝的證書。

  3. 用戶選擇一個證書,並且客戶端在握手過程中交換已知數據時使用證書的私鑰執行簽名。

在步驟2中只能選擇帶私鑰的證書。這是瀏覽器不選擇安裝在設備上的可信CA證書的原因。你不擁有私鑰

+0

我認爲1和2回答了我的問題。我也在調查,這是真的,所以接受這個解決方案。謝謝。 – System

+0

謝謝。就我而言,我有2個客戶端證書。當我訪問一些網站時,Chrome的對話框允許我選擇其中一個。當我訪問其他網站時,Chrome的對話框只顯示一個。我想知道爲什麼另一個被省略。 CA列表(#1 /#2)解釋符合行爲,所以它必須是真實的! :-) – dashrb

相關問題