此篇承接上一篇加密和哈希,并且回答上一篇提出的問題。
此篇文章的邏輯圖

證書
在說數(shù)字證書之前,先說一下什么是證書,其實在我之前不讓蘋果開發(fā)者賬號折磨我一文中已經(jīng)說過,這兒引用一下:
什么是證書?證書就是:證明證書擁有者擁有證書上所說的能力。一個證書要涉及到頒發(fā)者,擁有者,證明擁有者擁有了什么能力。例如,CET-4證書;頒發(fā)者:學校,擁有者:自己,證明的能力:英語達到四級水平。以上是證書通用的概念,不論是什么證書,都應該首先想到上面幾點。
數(shù)字證書:
頒發(fā)者:CA證書授權(quán)(Certificate Authority)中心
擁有者:申請到證書的通信者
證明的能力:身份認證,也就是說證明我就是我
數(shù)字證書頒發(fā)者CA
數(shù)字證書認證機構(gòu)(英語:
Certificate Authority,縮寫為CA),也稱為電子商務認證中心、電子商務認證授權(quán)機構(gòu),是負責發(fā)放和管理數(shù)字證書的權(quán)威機構(gòu),并作為電子商務交易中受信任的第三方,承擔公鑰體系中公鑰的合法性檢驗的責任。CA中心為每個使用公開密鑰的用戶發(fā)放一個數(shù)字證書,數(shù)字證書的作用是證明證書中列出的用戶合法擁有證書中列出的公開密鑰。CA機構(gòu)的數(shù)字簽名使得攻擊者不能偽造和篡改證書。
CA認證中心之間的關(guān)系
CA認證中心之間的關(guān)系如下圖所示(圖1-0):

CA認證中心之間是一個樹狀結(jié)構(gòu),根CA認證中心可以授權(quán)多個二級的CA認證中心,二級CA認證中心也可以授權(quán)多個三級的CA認證中心...如果你是數(shù)字證書申請人,你可以向根CA認證中心,或者二級,三級的CA認證中心申請數(shù)字證書,這是沒有限制的,當你成功申請后,你就稱為了數(shù)字證書所有人。值得注意的是,根CA認證中心是有多個的,也就是說會有多棵這樣的結(jié)構(gòu)樹。
CA認證中心的權(quán)威性
上圖(圖1-0)中的CA認證中心所有人,他們都有一個數(shù)字證書,和屬于自己的公鑰和私鑰,這些是他們的父CA認證中心頒發(fā)給他們的。根CA認證中心的證書稱為根證書,根證書自己認證自己的有效性,根證書是整個證書體系安全的根本,如果根證書出了問題,他下面所有子證書都不可被信任,因為子證書都是依賴根證書證明自己的有效性的,從而形成證書信任鏈。
對于私鑰:CA認證中心/數(shù)字證書所有人自己保存,不公開。
對于公鑰:CA認證中心/數(shù)字證書所有人會把公鑰存在他的CA認證中心的數(shù)字證書內(nèi)。
數(shù)字簽名過程
數(shù)字證書使用數(shù)字簽名作驗證,簡單來說證書都會包含3個部分:證書內(nèi)容(F),加密算法(A,其實有兩個,一個哈希算法,一個加密算法),F加密密文(F')。首先,F會被散列算法SHA1計算出hash值h1 (稱為括號中描述不準確感謝@xxxxxx_8705的指正,然后128bit的摘要)h1會被發(fā)布這個數(shù)字簽名的CA認證機構(gòu)的用私鑰進行RSA加密,注意:是發(fā)布這個數(shù)字簽名的CA認證機構(gòu),如果現(xiàn)在被加密的數(shù)字證書是屬于二級CA認證機構(gòu)的,那么用來加密這個證書的私鑰是根CA認證機構(gòu)的私鑰!RAS加密完后,就形成密文F'。整個數(shù)字簽名過程如下圖(圖2-0)

數(shù)字證書驗證合法性
當你要驗證這個數(shù)字證書可信/合法性時,你需要找到你的上一層CA認證中心的數(shù)字證書,并且從中獲取公鑰,把數(shù)據(jù)證書中的密文F'進行RSA解密,如果得出的值h2和h1比較(h1可以立即用數(shù)據(jù)證書中的F現(xiàn)場算出來),如果相等,則認為證書是可信的,合法的!由于你是不可能知道上一層CA認證中心的私鑰,所以你無法偽造一個可以用上一層CA認證中心公鑰解密的數(shù)字證書!數(shù)字證書驗證合法性過程如下圖(圖2-1)

由于一個數(shù)字證書是基于上層的數(shù)字證書作驗證的,那么又怎么驗證上層的數(shù)字證書是否合法呢?這就會出現(xiàn)一直遞歸上去的現(xiàn)象,也就是上面說的形成證書信任鏈。事實也是這樣的,驗證一個證書是否合法,需要驗證到他的最頂層的根證書是否合法!所以上面說到根證書是整個證書體系安全的根本。
數(shù)字證書的組成
證書詳細組成可自己打開電腦鑰匙串隨意選一個證書去瀏覽一下,我這里貼圖一張不做詳細說明參考下圖(圖3-0),想要詳細了解可看我下面參考的文章淺析數(shù)字證書中證書組成部分。

總結(jié)
數(shù)字證書的制作使用了數(shù)字簽名,每一個數(shù)字證書里面都包含了申請者的公鑰,所以上文提出的問題就解決了,Alice不直接要Bob的公鑰,而是去要一個Bob去CA申請的數(shù)字證書,數(shù)字證書中有Bob的公鑰,而且數(shù)字證書證明了他就是Bob(也就是開篇提到的證明了什么,我就是我),Alice只要驗證數(shù)字證書沒有問題就可以開始通信了。