2014-09-19 218 views
0

在客戶端身份驗證步驟中,如果證書過多,瀏覽器如何知道在SSL握手的客戶端身份驗證步驟中向服務器發送哪個證書。我的意思是它如何識別哪個服務器是哪個證書SSL握手 - 客戶端身份驗證

回答

1

現在對於Cyber​​Monk的問題

如果你看到我的反應上面,你可以看到服務器是如何請求的客戶端發送一個證書,其值得信賴的權威之一。客戶可以根據此選擇證書。

如果發生衝突,瀏覽器通常會向您顯示證書列表,並要求您選擇其中一個要使用的證書。我知道Safari和Chrome確實如此。

最有可能的是,一旦您選擇了證書,瀏覽器將繼續在會話的其餘部分使用相同的證書。

現在,爲了讓tomcat的請求相同,如果這是一個自簽名證書,您可以將公共證書放在tomcat的truststore中。它不是一個自簽名證書,您必須將公共根CA證書放置在tomcat的信任存儲中

瀏覽器可能包含多個公用證書,但它不會將證書發送到服務器,除非它具有私有簽署它的鑰匙。只有在創建證書的過程中,您(或您的瀏覽器)纔會擁有私鑰。一旦您擁有私鑰並將私鑰/公鑰證書對導入瀏覽器,它將能夠發送證書。

1

它沒有。客戶端證書不是特定於服務器的。

+0

哦,如果是這樣,我把我的客戶端證書放在瀏覽器中。如果兩臺不同的服務器需要兩個不同的客戶端證書,客戶端將如何選擇合適的客戶端證書 例如:我的tomcat用戶xml有一個標記 證書在客戶端瀏覽器中以相同的值安裝。現在客戶瀏覽器如何知道握手時要選擇哪個證書 – Cybermonk 2014-09-19 08:02:12

1

服務器可以選擇性地向客戶端發送所需證書代理的列表。然後客戶可以選擇由所需CA簽署的證書。

+0

如果是自簽名證書,該怎麼辦?以及我如何讓我的服務器(tomcat)告訴我,我想讓瀏覽器給我使用java keytool創建的證書?所以我可以在服務器的tomcat用戶領域驗證它(我希望這是我們驗證它的地方!)對於整個事情來說是非常新穎的。 – Cybermonk 2014-09-19 08:52:50

+0

如果客戶端證書是自簽名的,則不存在您可以提供的信任錨點,因此它可能不起作用。但是,如果你在'trustStoreFile'中有預期的客戶端證書,它可能會起作用。除此之外,我猜Tomcat只是將'truststoreFile'中的所有CA的名稱發送給客戶端,但我對tomcat沒有自己的經驗。 – 2014-09-19 10:03:47