1. 比較好奇,為什么客戶端需要保存一個根證書
在SSL中,有客戶端,服務器,CA認證中心(一個機構)
先要確定一個基調,客戶端是完全信任 CA認證中心。CA認證中心給服務器發了個數字證書,CA認證中心表示信任服務器,那么最終,客戶端從服務器下載了數字證書,去找CA認證中心校驗(校驗,CA認證中心是否信任服務器)。
客服端信任CA認證中心,CA認證中心信任服務器,那么客戶端就信任服務器。那么這個就是一條信任鏈。
2. 以上是基本原理,具體實施起來就復雜一點
客戶端認證流程:
(1)服務器生成一對密鑰,私鑰自己留着,公鑰交給數字證書認證中心(CA)
(2)CA進行審核,並用CA自己的私鑰對服務器提供的公鑰進行簽名生成數字證書
(3)在客戶端建立連接時,客戶端從服務器獲取數字證書,用CA的公鑰(根證書)對數字證書進行驗證,比對一致,說明該數字證書確實是CA頒發的(得此結論有一個前提就是:客戶端的CA公鑰確實是CA的公鑰,即該CA的公鑰與CA對服務器提供的公鑰進行簽名的私鑰確實是一對。),而CA又作為權威機構保證該公鑰的確是服務器端提供的,從而可以確認該證書中的公鑰確實是合法服務器端提供的。
為保證第3步中提到的前提條件,CA的公鑰必須要安全地轉交給客戶端(CA根證書必須先安裝在客戶端),因此,CA的公鑰一般來說由瀏覽器開發商內置在瀏覽器的內部。於是,該前提條件在各種信任機制上,基本保證成立。
3. 以上總結起來
CA認證中心有一個根證書,是信任鏈的起點,就是大家都相信CA認證中心。
客戶端從CA認證中心下載這個根證書。
CA認證中心給了服務器一個數字證書。
客戶端連接服務器的時候,下載這個數字證書。
數字證書不等於根證書。