1. 程式人生 > >理解證書和證書鏈

理解證書和證書鏈

證書和證書鏈

最近一直在研究的東東,這東西說到底,也是依賴於一個前提

ROOT 證書,所以說很多安全說最終也是個偽命題;只是搞理論的人喜歡

把東西搞複雜,亂扯概念,不講本質。

1.  簡單來說,end-user證書上面幾級證書都是為了保證end-user證書未被篡改,

保證是CA簽發的合法證書,進而保證end-user證書中的公鑰未被篡改。

2. 除了end-user之外,證書被分為root Certificates和intermediates Certificates。

相應地,CA也分了兩種型別:root CAs 和intermediates CAs。

首先,CA的組織結構是一個樹結構,一個root CAs下面包含多個intermediates CAs,

而intermediates又可以包含多個intermediates CAs。root CAs 和 intermediates CAs

都可以頒發證書給使用者,頒發的證書分別是rootCertificates和intermediates Certificates,

終端使用者用來認證公鑰的證書則被稱為end-user Certificates。

3. 我們使用end-user certificates來確保加密傳輸資料的公鑰(public key)不被篡改,

而又如何確保end-user certificates的合法性呢?這個認證過程跟公鑰的認證過程類似,

首先獲取頒佈end-user certificates

CA的證書,然後驗證end-user certificatessignature

一般來說,root CAs不會直接頒佈end-user certificates的,而是授權給多個二級CA,而二級CA

又可以授權給多個三級CA,這些中間的CA就是intermediates CAs,它們才會頒佈end-user certificates


4. 1.拆封證書

所謂證書的拆封,是驗證發行者CA的公鑰能否正確解開客戶實體證書中的“發行者的數字簽名”。

兩個證書在交換傳遞之後,要進行拆封,看是否能夠拆封。一個證書或證書鏈的拆封操作,是為了

從中獲得一個公鑰。可示為X1p?X1<<X2>>,

這為一箇中綴操作,其左運算元為一個認證機構的公鑰,

右運算元則為該認證機構所頒發的一個證書。如果能正確解開,輸出結果為使用者的公鑰

從證書內容列表中可以看出,證書結構的最後內容是認證機構CA的數字簽名,即一個可信任的CA

已經在證書上用自己的私鑰做了簽名。如果用該CA的公鑰就可以拆封一個使用者實體的證書,那麼,

這個簽名被驗證是正確的。因為它證明了這個證書是由權威的、可信任的認證機構所簽發。因此,

這個實體證書是真實可信的。

5..證書鏈的驗證

所謂證書鏈的驗證,是想通過證書鏈追溯到可信賴的CA根(ROOT。換句話說,要驗證簽發使用者

實體證書的CA是否是權威可信的CA,如CFCA。證書鏈驗證的要求是,路徑中每個證書從最終實體到根證書

都是有效的,並且每個證書都要正確地對應發行該證書的權威可信任性CA。操作表示式為 Ap?A<<B>>B<<C>>,

指出該操作使用A的公鑰,從B的證書中獲得B的公鑰Bp,然後再通過 Bp來解封C的證書。操作的最終結果

得到了C的公鑰Cp。這就是一個證書鏈的認證拆封過程。

    (1)證書鏈的定義。證書鏈也稱認證鏈,它是最終實體到根證書的一系列證書組成,這個證書鏈的處

理過程是所有根的前輩指向最開始的根證書,即子輩連向父輩。如圖1所示。

  (2)從使用者實體證書到ROOT CA的證書鏈確認,其具體的做法如下頁圖2所示。

從以上對比中可以看出:使用者實體證書中的AuthorityKey Identifier擴充套件項CertIssuer,即證書籤發者

甄別名,應當與CA證書中簽發此證書的CA名稱相匹配,如圖中箭頭所指。即CA證書中的Subject Name

是使用者實體證書中Issuer Name父名,對上級CA來說又成為子名,CA證書中Issuer Name上一級CA

名字,成為可信任的鏈狀結構。這樣通過各級實體證書的驗證,逐漸上溯到鏈的終止點——可信任的根CA

如CFCA。