ssl證書鏈的驗證的其它方式

2021-09-21 04:43:41 字數 1738 閱讀 6236

ssl 證書鏈的驗證主要分為兩種方式,自上而下和自下而上,其中自上而下又可以分為兩種方式,其中一種就是 openssl 的實現方式,也就是《

openssl 

的證書鏈的驗證

》中介紹的其中一種方式,另一種是自上而下與自下而上結合的方式;在自下而上的驗證方式中也可以分為兩種方式,一種是平坦遍歷的方式,另一種是分級別的遍歷方式。鑑於自上而下的單鏈方式和基於等級的自下而上的方式已經在《

openssl 

的證書鏈的驗證

》中有所介紹,本文僅介紹餘下來的另外兩種方式,首先看看自上而下與自下而上結合的方式,下圖為乙個 ca 體系的真實邏輯結構:

root[a1[b1[c1],b2,b3[c2],b4],a2[b5],a3[b6,b7[c3]]]

下面是 openssl 框架將上述結構載入記憶體的實際結構,可以看出,具體的頒發關係已經沒有了,只剩下了乙個只有級別的吊鏈結構,我們要做的就是在這個吊鏈結構中遍歷,而且是自上而下的遍歷,尋找一切有可能的驗證路徑,這就涉及到了圖演算法,也就是圖的遍歷演算法,但是實際上這個圖並沒有想象的那麼複雜,而可以被看做是一棵樹,具體的演算法見下面的偽**和文字解釋:

root

a1-a2-a3

b1-b2-b3-b4-b5-b6-b7

c1-c2-c3

偽**如下,如不具體,請指導或新增,可以道明的是,肯定不完整,我真心希望有志同道合的傢伙和我一起**linux核心或者openssl的點點滴滴:

root->a1->b1->c2(failed)

b2->c2(failed)

…. (可能導致複雜的回溯演算法,見下面的解釋)

b3->c2(right)

get upper level and set to a

set b3 to to_cert

retry:

for-each in a as a

if a can verify to_cert

get upper level and set to a

set a to to_cert

retry.

if all upper failed

failed!

首先從root

依次往下驗證,每一層按照從煉表頭到尾的順序,直到驗證失敗,然後回到驗證方的兄弟,將之作為新的驗證方重新驗證被驗證方,如果所有兄弟都已用盡,也就是說全部驗證失敗,那麼被驗證方做上標記,作廢之,並且回到全軍覆沒的兄弟的再上一層的已經參加過驗證的兄弟,然後將之作為新的驗證方,重新開始驗證全軍覆沒的兄弟的第乙個,依次類推!注意有個例外情況,那就是驗證最下層使用者證書的時候,因為使用者證書只有乙個,並且是確定的乙個,那麼如果上層的所有兄弟都驗證失敗,就可以證明結果的失敗,沒有必要往上繼續回溯了,否則就要回溯。只要在回溯的過程中有驗證正確的,那麼就要開始向上驗證,一直到根,如果到不了根,那麼這條回溯路徑上的所有的證書將被做上標記,以後不再參與驗證,全部作廢,因為乙個證書只能由乙個

ca頒發,所以從

root

到使用者證書的路徑如果有的話只有一條,這個看似複雜的基於圖的回溯演算法實際上很少有需要完全遍歷的情況。

最後一種方式就是平坦的驗證方式,就是針對每個證書,都要盡可能遍歷store中的所有證書進行驗證,**如下,比較簡單,但是對於用int型別做depth來說,最大的證書鏈深度也就限定為了32

static int openssl_verifychain(x509 **chain, int n, x509 *cert)

for(i = 0; i < n; i++) {

if(flag & (1<

載入arx的其它方式

使用lisp載入 在.lsp中加入下面這句 command netload arc.dll 然後在autocad 使用登錄檔載入 非託管的arx程式的載入 windows registry editor version 5.00 託管的arx程式的載入 託管的arx程式是指由.net程式 c c n...

requests 中的 SSL 證書驗證

現在很多 都要求使用 https 協議,但是有些 可能並沒有設定好 https 證書,或者 的 https 證書不被 ca 機構認可,這時候,這些 可能就會出現 ssl 證書錯誤的提示。我們可以在 中中通過一些設定來忽略證書的驗證。import requests from requests.pack...

不同等級的SSL證書 SSL證書的作用

不同等級ssl證書的區別 dvssl證書,又稱網域名稱驗證型ssl證書。dvssl證書是簽發只驗證網域名稱所有權,快速頒發的ssl證書,安全級別較低。ovssl證書,又稱機構驗證型ssl證書。當前廣泛應用的ssl證書,需要驗證企業身份資訊後頒發。ovssl證書是當前最常見的證書型別,適用於行政 企業...