之前有個客戶,咨詢安信證書的技術客服,說:一個新的網站去買了ca證書,用戶通過瀏覽器去訪問,這時候瀏覽器如何去驗證這個證書的正確性,防止被中間人攻擊? 是需要到ca網站上去驗證嗎還是什么?
安信證書為了解決存在相同問題的人疑惑,接下來通過介紹https證書的結構組成和瀏覽器如何驗證證書的合法性,為大家解答這個問題。
證書頒發機構,也就是CA,是不會直接向用戶簽發證書的,而是多了一層中間證書頒發機構。CA會自己給自己簽發一個證書,這個證書叫做根證書或Root CA;然后CA會通過根證書來簽發中間證書,授權中間證書頒發機構簽發證書的權限;最后中間證書頒發機構通過中間證書向用戶簽發用戶證書。至於為什么需要多這么一層中間證書頒發機構,目的是為了保護根證書,減少根證書被攻擊或者說被破解的風險。因為一旦根證書被破解了,根證書所屬的CA頒發的所有證書都將失去保護網站的能力,這是一件十分嚴重的事情。
值得注意的是,中間證書可以不止一個,中間證書層數越多,根證書越安全,但是中間證書越多,證書結構越復雜,越占用通信資源。所以一般情況下,用戶收到的證書是三個證書(一個根證書、一個中間證書、一個用戶證書)或四個證書(一個根證書、兩個中間證書、一個用戶證書)。
好了,相關原理解釋完,下面開始正式回答題主的問題,我們以一個部署了證書的網站為例,如圖所示,我們點開瀏覽器地址欄的綠色安全鎖。
再點開證書信息,在證書路徑界面顯示的這三個證書就是我們要找的完整證書。從上到下分別是:根證書、中間證書和用戶證書。
事實上,我們申請到的證書只是用戶證書,中間證書和根證書是很早就被簽發,很早就存在的。我們還要再了解一下根證書庫這個概念,瀏覽器為什么信任CA簽發的證書呢?
因為CA是可信任的第三方組織,負責證書的生成、簽發和作廢。為什么CA時可信的呢,因為他們被WebTrust信任。只有通過WebTrust國際安全審計認證的證書頒發機構CA,其簽發的證書才會被各大瀏覽器信任。根證書庫包含瀏覽器信任的證書頒發機構CA的根證書,有的瀏覽器會自建根證書庫,比如Mozilla Firefox,有的瀏覽器會使用其他瀏覽器的根證書庫。
那么問題來了,誰來驗證證書的合法性呢?當然是瀏覽器啦,那么瀏覽器是如何驗證的呢?
用戶證書被中間證書信任,而中間證書被根證書信任,根證書又被瀏覽器信任,這樣一個完整的證書鏈使得瀏覽器可以在根證書庫內一次檢索用戶證書、中間證書和根證書,如果能匹配到根證書,那么這一信任鏈上的所有證書都是合法的。
這里有個題外話,中間證書和根證書統稱為證書鏈,如果我們在部署證書時,僅導入了用戶證書,那么PC短訪問網站是沒有問題的,因為PC瀏覽器內置絕大部分CA的證書鏈,會自動補全。如果是移動端訪問,如大部分的手機瀏覽器,那么就會提示不安全,因為大部分的手機瀏覽器並不會內置證書鏈,所以無法識別用戶證書,也就會把網站標記為不安全。所以切記,部署證書是一定要安裝證書鏈。
這時候又出現了一個新的問題,如果用戶證書被吊銷,瀏覽器還會顯示安全嗎?證書頒發機構有個叫做證書作廢列表的東西。證書簽發以后,如果出現私鑰泄露或丟失、證書所有者信息變更、不再需要繼續使用證書等情況,證書頒發機構將會對證書進行作廢,並將證書的序列號登記在證書作廢列表CRL中。瀏覽器通過查詢證書頒發機構CA最新的CRL,可以確定某個證書是否有效。但是,瀏覽器並不可能在每個訪問者訪問每個網站時都向CA查詢一次,拿着工作量也太大了啊,帶不動,帶不動,所以通常瀏覽器會定期查詢CA最新的CRL,這也就會在一定程度上出現,證書被吊銷了,瀏覽器依舊會信任的情況,但是這個是時間不會太久。
如果用戶證書沒有問題,反而證書頒發機構CA由於安全防護出現問題導致一些機密內容泄露,那么這個CA就不應該被信任,各大瀏覽器就會將這個CA的根證書從根證書庫中刪除。這樣,改正數簽發的所有中間證書和用戶證書都將不被信任。
以上就是瀏覽器如何驗證https證書的合法性的大致了解,希望能幫助到你們。歡迎廣大用戶前來咨詢SSL證書相關問題。
聲明:本文由“安信證書”原創發布,原文鏈接:https://www.anxinssl.com/9304.html,內容未經允許不得轉載,或轉載時需注明出處!
補充:
1.驗證證書的真偽
當瀏覽器拿到一個數字證書,先看發證機關,然后找到相應的發證機關的證書,獲得發證機關的公鑰
,用此公鑰解密被加密的MD5,這樣就獲得了此證書的MD5值,稱它為Hash1。然后瀏覽器用MD5算法對
此證書重新計算一遍MD5,獲得Hash2。然后比較Hash1和Hash2是否相等。如果相等就證明這張證書是
由發證機關頒發的,並且沒有被篡改過.
2.驗證持有者的真偽
核對持有證書人的身份。這就要依賴證書里面包含的公鑰。此公鑰是這張證書所有者的公鑰(注意,
這里指的是所有者,而不是持有者!),用此公鑰加密一段信息發送給證書的持有者,如果持有者能
發送回(可以是被私鑰加密,也可以是明文,沒有關系)被加密的這段信息的話就證明該持有者擁有
該證書對應的私鑰,也就是說,該持有者就是該證書的所有者。
(接收者收到用公鑰加密的信息,能用私鑰解密發回或用私鑰加密后發回)
3.驗證證書所有者的姓名
證書中所有者的名字與認證中心(CA)登記的(Common Name)姓名是否一樣(對服務器來說,域名是否一致)
轉載於:https://blog.51cto.com/gzkhrh/1582292