本發(fā)明涉及網(wǎng)絡安全領域,尤其涉及一種數(shù)字證書有效性的驗證方法及裝置。
背景技術:
數(shù)字證書就是互聯(lián)網(wǎng)通訊中標志通訊各方身份信息的一串數(shù)字,提供了一種在互聯(lián)網(wǎng)上驗證通信實體身份的方式,數(shù)字證書不是數(shù)字身份證,而是身份認證機構蓋在數(shù)字身份證上的一個章或印(或者說加在數(shù)字身份證上的一個簽名)。數(shù)字證書在電子商務中是一種權威性的文檔,證書的頒發(fā)者必須具有可信賴性,它是由權威機構—證書管理機構,又稱為數(shù)字證書授權機構(Certifi證書管理機構te Authority)發(fā)行的,人們可以在網(wǎng)上用它來識別對方的身份。數(shù)字證書是一種安全機制,它能保證實現(xiàn)和完成PKI(公鑰基礎設施,Public Key Infrastructure)的身份認證、完整性、保密性及不可否認性的安全服務。
為了保證網(wǎng)絡上的信息安全,數(shù)字證書也必須具有唯一性和可靠性。為了達到這一目的,需要對數(shù)字證書進行驗證。在當前的證書驗證中,用戶將數(shù)字證書數(shù)據(jù)發(fā)給驗證中心,驗證中心根據(jù)數(shù)字證書的頒發(fā)者,在指定的證書庫中通過比較DN(唯一甄別名,Distinguished Name),從證書庫中查找出數(shù)字證書的頒發(fā)者證書。但是可能會出現(xiàn)該數(shù)字證書的頒發(fā)者證書系統(tǒng)升級,頒發(fā)者證書的DN不變,而摘要算法或密鑰等改變,因此,會出現(xiàn)不同的頒發(fā)者證書使用同一個DN的情況。此時,可能會出現(xiàn)雖然待驗證的數(shù)字證書是有效的,但通過比較DN來查找證書,由于找到的證書不是想要驗證的數(shù)字證書,而是DN相同的數(shù)字證書,進一步對找到的證書驗證不通過而得出待驗證的數(shù)字證書無效的結(jié)論。因此,通過這種方式對數(shù)字證書進行驗證,很可能得到錯誤的結(jié)果。
技術實現(xiàn)要素:
本發(fā)明實施例提供一種數(shù)字證書有效性的驗證方法及裝置,用以提高驗證數(shù)字證書有效性的準確度。
本發(fā)明實施例提供的數(shù)字證書有效性的驗證方法包括:
確定N級數(shù)字證書,其中所述N級數(shù)字證書中第1級數(shù)字證書是根據(jù)待驗證數(shù)字證書的標識信息遍歷證書管理機構確定的,后一級數(shù)字證書的標識信息與前一級數(shù)字證書的頒發(fā)者證書的標識信息相同,第N級數(shù)字證書為根證書,N為正整數(shù);
根據(jù)確定的N級數(shù)字證書,構建證書鏈,其中構建的證書鏈中包括N張數(shù)字證書,且同一證書鏈中的任意兩張數(shù)字證書的級數(shù)不同;
若證書鏈構建成功,則確定所述待驗證數(shù)字證書有效。
可選的,所述確定N級數(shù)字證書,包括:
根據(jù)所述待驗證數(shù)字證書的標識信息,遍歷所述證書管理機構查找到標識信息與所述待驗證證書的標識信息相同的第1級數(shù)字證書;
根據(jù)第m級數(shù)字證書的頒發(fā)者證書的標識信息,遍歷所述證書管理機構查找到標識信息與所述第m級數(shù)字證書的頒發(fā)者證書的標識信息相同的第m+1級數(shù)字證書,其中,1≤m<N,且m為整數(shù)。
可選的,所述根據(jù)所述待驗證數(shù)字證書的標識信息,從證書管理機構證書管理機構中查找到標識信息與所述待驗證證書的標識信息相同的第1級數(shù)字證書之后,還包括:
若查找到標識信息與所述待驗證證書的標識信息相同的多張數(shù)字證書,則根據(jù)所述待驗證數(shù)字證書的句柄,從查找到的所述多張數(shù)字證書中確定一張數(shù)字證書,作為所述第1級數(shù)字證書;
所述根據(jù)第m級數(shù)字證書的頒發(fā)者證書的標識信息,遍歷所述證書管理機構查找到標識信息與所述第m級數(shù)字證書的頒發(fā)者證書的標識信息相同的第m+1級數(shù)字證書之后,還包括:
若查找到標識信息與所述第m級數(shù)字證書的頒發(fā)者證書的標識信息相同的多張數(shù)字證書,則用查找到的所述多張數(shù)字證書的公鑰分別對所述第m級數(shù)字證書的數(shù)字簽名進行驗證,驗證簽名成功的數(shù)字證書作為所述第m+1級數(shù)字證書。
可選的,所述根據(jù)確定的N級數(shù)字證書,構建證書鏈,包括:
利用第k+1級數(shù)字證書的公鑰,驗證第k級數(shù)字證書的數(shù)字簽名,其中,1≤k<N,且k為整數(shù);
若從第1級數(shù)字證書到根證書均解密成功,則證書鏈構建成功。
可選的,所述確定N級數(shù)字證書之后,所述根據(jù)確定的N級數(shù)字證書,構建證書鏈之前,還包括:
針對所述N級數(shù)字證書中的每一級數(shù)字證書,進行有效性驗證,若所述數(shù)字證書的有效性驗證通過,則利用所述數(shù)字證書構建證書鏈;
所述數(shù)字證書的有效性驗證至少包括所述數(shù)字證書的有效期驗證或證書吊銷列表CRL查詢。
可選的,所述根據(jù)確定的N級數(shù)字證書,構建證書鏈之后,還包括:
若證書鏈構建失敗,則返回失敗碼。
一種數(shù)字證書有效性的驗證裝置,包括:
查詢模塊,用于確定N級數(shù)字證書,其中所述N級數(shù)字證書中第1級數(shù)字證書是根據(jù)待驗證數(shù)字證書的標識信息確定的,后一級數(shù)字證書的標識信息與前一級數(shù)字證書的頒發(fā)者證書的標識信息相同,第N級數(shù)字證書為根證書,N為正整數(shù);
構建模塊,用于根據(jù)確定的N級數(shù)字證書,構建證書鏈,其中構建的證書鏈中包括N張數(shù)字證書,且同一證書鏈中的任意兩張數(shù)字證書的級數(shù)不同;
反饋模塊,用于若證書鏈構建成功,則確定所述待驗證數(shù)字證書有效。
可選的,所述查詢模塊,具體用于:
根據(jù)所述待驗證數(shù)字證書的標識信息,從證書管理機構中查找到標識信息與所述待驗證證書的標識信息相同的第1級數(shù)字證書;
根據(jù)第m級數(shù)字證書的標識信息,從所述證書管理機構中查找到標識信息與所述第m級數(shù)字證書的頒發(fā)者證書的標識信息相同的第m+1級數(shù)字證書,其中,1≤m<N,且m為整數(shù)。
可選的,所述查詢模塊,具體用于:
若查找到標識信息與所述待驗證證書的標識信息相同的多張數(shù)字證書,則根據(jù)所述待驗證數(shù)字證書句柄中的摘要算法,公鑰長度等信息,從查找到的所述多張數(shù)字證書中確定一張數(shù)字證書,作為所述第1級數(shù)字證書;
若查找到標識信息與所述第m級數(shù)字證書的頒發(fā)者證書的標識信息相同的多張數(shù)字證書,則用查找到的所述多張數(shù)字證書的公鑰分別對所述第m級數(shù)字證書的數(shù)字簽名進行驗證,驗證簽名成功的數(shù)字證書作為所述第m+1級數(shù)字證書。
可選的,所述構建模塊,具體用于:
利用第k+1級數(shù)字證書的公鑰,驗證第k級數(shù)字證書的數(shù)字簽名,其中,1≤k<N,且k為整數(shù);
若從第1級數(shù)字證書到根證書均驗證簽名成功,則證書鏈構建成功。
可選的,還包括驗證模塊,用于:
針對所述N級數(shù)字證書中的每一級數(shù)字證書,進行有效性驗證,若所述數(shù)字證書的有效性驗證通過,則所述構建模塊利用所述數(shù)字證書構建證書鏈;
所述數(shù)字證書的有效性驗證至少包括所述數(shù)字證書的有效期驗證或證書吊銷列表CRL查詢。
可選的,所述反饋模塊,還用于:若證書鏈構建失敗,則返回失敗碼。
本發(fā)明實施例中,根據(jù)待驗證數(shù)字證書的標識信息,遍歷證書管理機構或證書存儲機構,確定標識信息與該待驗證數(shù)字證書的標識信息相同的數(shù)字證書,作為第1級數(shù)字證書。根據(jù)第1級數(shù)字證書的頒發(fā)者證書的標識信息,遍歷證書管理機構或證書存儲機構,確定第2級數(shù)字證書,第2級數(shù)字證書的標識信息與該第1級數(shù)字證書的頒發(fā)者證書的標識信息相同。然后根據(jù)第2級數(shù)字證書的頒發(fā)者證書的標識信息,遍歷證書管理機構或證書存儲機構,確定第3級數(shù)字證書,第3級數(shù)字證書的標識信息與第2級數(shù)字證書的頒發(fā)者證書的標識信息相同。以此類推,針對每個第N級數(shù)字證書,根據(jù)該第N級數(shù)字證書的頒發(fā)者證書的標識信息,遍歷證書管理機構或證書存儲機構,確定第N+1級數(shù)字證書,其中,每個第N+1級數(shù)字證書的標識信息與該第N級數(shù)字證書的頒發(fā)者證書的標識信息相同,直至每個第N+1級數(shù)字證書均為根證書。然后以第1級數(shù)字證書為起點,根證書為終點,由級數(shù)較低的數(shù)字證書向級數(shù)較高的數(shù)字證書建立證書鏈,若證書鏈構建成功,則確定待驗證證書有效。由于可能出現(xiàn)兩個或多個數(shù)字證書的標識信息相同而內(nèi)容不同的情況,本發(fā)明實施例中,不是根據(jù)待驗證數(shù)字證書的標識信息找出一個標識信息相同的數(shù)字證書就對其進行驗證,而是遍歷證書管理機構或證書存儲機構,將所有標識信息與待驗證數(shù)字證書的標識信息相同的數(shù)字證書均找出,同理找出標識信息與頒發(fā)者證書的標識信息相同的所有數(shù)字證書。這樣可以避免單個數(shù)字證書獲取并驗證時出現(xiàn)的證書鏈無法構建,進而錯誤地認為待驗證數(shù)字證書無效的情況,可以提高驗證數(shù)字證書有效性的準確度。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域的普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例中數(shù)字證書有效性的驗證方法的流程圖;
圖2為本發(fā)明實施例中一種具體的數(shù)字證書有效性的驗證方法的流程圖;
圖3為本發(fā)明實施例中一種數(shù)字證書有效性的驗證裝置的示意圖。
具體實施方式
為了使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明作進一步地詳細描述,顯然,所描述的實施例僅僅是本發(fā)明一部份實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。
在數(shù)字證書系統(tǒng)中,當系統(tǒng)升級時,數(shù)字證書的頒發(fā)者證書的摘要算法可能會由sha1升級為sha256,或者密鑰由1024位升級為2048位,而頒發(fā)者證書的DN不變。依照現(xiàn)有技術對數(shù)字證書進行驗證時,根據(jù)用戶發(fā)送的數(shù)字證書的相關數(shù)據(jù),獲取該數(shù)字證書的頒發(fā)者證書的DN,從本地證書庫中查找DN相同的頒發(fā)者證書。此時,若存在兩個或多個相同DN的數(shù)字證書,則找到的頒發(fā)者證書可能是系統(tǒng)未升級的數(shù)字證書,如密鑰為1024位的數(shù)字證書,而用戶傳來的數(shù)字證書是系統(tǒng)已升級的,其密鑰為2048位。由于已找到DN相同的數(shù)字證書,則跳出在本地數(shù)據(jù)庫中的查找,對找到的數(shù)字證書進行驗證,并開始構建證書鏈。由于找到的數(shù)字證書的密鑰與用戶發(fā)來的數(shù)字證書的密鑰不一致,因此無法成功建立證書鏈。而基于此確定用戶發(fā)來的數(shù)字證書無效是不正確的。
為了解決上述問題,本發(fā)明實施例提供了一種數(shù)字證書有效性的驗證方法,該方法的流程如圖1所示,方法可以包括如下步驟:
S101、確定N級數(shù)字證書,其中所述N級數(shù)字證書中第1級數(shù)字證書是根據(jù)待驗證數(shù)字證書的標識信息遍歷證書管理機構確定的,后一級數(shù)字證書的標識信息與前一級數(shù)字證書的頒發(fā)者證書的標識信息相同,第N級數(shù)字證書為根證書,N為正整數(shù)。
S102、根據(jù)確定的N級數(shù)字證書,構建證書鏈,其中構建的證書鏈中包括N張數(shù)字證書,且同一證書鏈中的任意兩張數(shù)字證書的級數(shù)不同。
S103、若證書鏈構建成功,則確定所述待驗證數(shù)字證書有效。
本發(fā)明實施例中,根據(jù)待驗證數(shù)字證書的標識信息,遍歷證書管理機構或證書存儲機構,從DN相同的多張數(shù)字證書中確定標識信息與該待驗證數(shù)字證書的標識信息相同的一張數(shù)字證書,作為第1級數(shù)字證書。根據(jù)第1級數(shù)字證書的頒發(fā)者證書的標識信息,遍歷證書管理機構或證書存儲機構,確定第2級數(shù)字證書,從第2級的多張數(shù)字證書的標識信息與該第1級數(shù)字證書的頒發(fā)者證書的標識信息相同的一張數(shù)字證書。然后根據(jù)第2級數(shù)字證書的頒發(fā)者證書的標識信息,遍歷證書管理機構或證書存儲機構,確定第3級數(shù)字證書,從第3級的多張數(shù)字證書的標識信息與第2級數(shù)字證書的頒發(fā)者證書的標識信息相同。以此類推,針對每個第N級數(shù)字證書,根據(jù)該第N級數(shù)字證書的頒發(fā)者證書的標識信息,遍歷證書管理機構或證書存儲機構,確定第N+1級數(shù)字證書,根據(jù)信息在多張數(shù)字證書中確定一張,其中,每個第N+1級數(shù)字證書的標識信息與該第N級數(shù)字證書的頒發(fā)者證書的標識信息相同,直至最后第N+1級數(shù)字證書為根證書。然后以第1級數(shù)字證書為起點,根證書為終點,由級數(shù)較低的數(shù)字證書向級數(shù)較高的數(shù)字證書建立證書鏈,若證書鏈構建成功,則確定待驗證證書有效。由于可能出現(xiàn)兩個或多個數(shù)字證書的標識信息相同而內(nèi)容不同的情況,本發(fā)明實施例中,不是根據(jù)待驗證數(shù)字證書的標識信息找出一個標識信息相同的數(shù)字證書就對其進行驗證,而是遍歷證書管理機構或證書存儲機構,將所有標識信息與待驗證數(shù)字證書的標識信息相同的數(shù)字證書均找出,同理找出標識信息與頒發(fā)者證書的標識信息相同的所有數(shù)字證書。這樣可以避免單個數(shù)字證書獲取并驗證時出現(xiàn)的證書鏈無法構建,進而錯誤地認為待驗證數(shù)字證書無效的情況,或者證書鏈構建成功,但是不是要驗證的證書的情況,可以提高驗證數(shù)字證書有效性的準確度。
本發(fā)明實施例中N級證書組中的所有數(shù)字證書均為遍歷本地證書庫中獲得,即步驟101包括:
根據(jù)所述待驗證數(shù)字證書的標識信息,遍歷所述證書管理機構或證書存儲機構查找到標識信息與所述待驗證證書的標識信息相同的第1級數(shù)字證書;
根據(jù)第m級數(shù)字證書的標識信息,遍歷所述證書管理機構或證書存儲機構查找到標識信息與所述第m級數(shù)字證書的頒發(fā)者證書的標識信息相同的第m+1級數(shù)字證書,其中,1≤m<N,且m為整數(shù)。
具體來說,接收到用戶發(fā)送的待驗證數(shù)字證書的標識信息,即待驗證數(shù)字證書的DN后,通過比較DN,從證書管理機構或證書存儲機構中查找與待驗證數(shù)字證書的DN相同的數(shù)字證書,作為第1級數(shù)字證書。當找到一張DN相同的數(shù)字證書后不退出查找過程,而是繼續(xù)根據(jù)該DN進行查找,直至遍歷完本地證書庫中的所有數(shù)字證書。因此,找到的第1級數(shù)字證書可能有一張或多張,也可能沒有第1級數(shù)字證書。若沒有第1級數(shù)字證書,則表明在證書庫中查找不到待驗證的數(shù)字證書,即該待驗證的數(shù)字證書無效。若找到一張或多張第1級數(shù)字證書,即可利用找到的第1級數(shù)字證書構建證書鏈。
與第1級數(shù)字證書類似的是,對于第1級數(shù)字證書之后的數(shù)字證書,也為遍歷證書庫獲得。具體來說,確定第1級數(shù)字證書的頒發(fā)者證書,根據(jù)第1級數(shù)字證書的頒發(fā)者證書的標識信息,遍歷證書庫,查找到標識信息與第1級數(shù)字證書的頒發(fā)者證書的標識信息相同的數(shù)字證書,作為第2級數(shù)字證書。確定相應的第2級數(shù)字證書的頒發(fā)者證書,根據(jù)第2第級數(shù)字證書的頒發(fā)者證書的標識信息,遍歷證書庫,查找到標識信息與第2級數(shù)字證書的頒發(fā)者證書的標識信息相同的數(shù)字證書,作為第3級數(shù)字證書。以此類推,根據(jù)第m級數(shù)字證書的頒發(fā)者證書的標識信息,遍歷證書庫,查找到標識信息與第m級數(shù)字證書的頒發(fā)者證書的標識信息相同的數(shù)字證書,做為第m+1級數(shù)字證書。直至確定出第N級數(shù)字證書為根證書。
根據(jù)待識別數(shù)字證書的標識信息查找到的數(shù)字證書,可能為一張,也有可能為多張,若查找到一張數(shù)字證書,則該數(shù)字證書為第1級數(shù)字證書,若查找到多張數(shù)字證書,還需從這多張數(shù)字證書中確定出與待識別數(shù)字證書相符的,作為第1級數(shù)字證書。
從而,所述根據(jù)所述待驗證數(shù)字證書的標識信息,從證書管理機構中查找到標識信息與所述待驗證證書的標識信息相同的第1級數(shù)字證書之后,還包括:
若查找到標識信息與所述待驗證證書的標識信息相同的多張數(shù)字證書,則根據(jù)所述待驗證數(shù)字證書的句柄,從查找到的所述多張數(shù)字證書中確定一張數(shù)字證書,作為所述第1級數(shù)字證書。
數(shù)字證書的句柄即相當于數(shù)字證書的指針,可以根據(jù)數(shù)字證書的句柄獲取該數(shù)字證書相關的所有信息,如DN、有效期、序列號等等。由于系統(tǒng)升級時,頒發(fā)者證書的DN可能不變,而摘要算法或密鑰等其它內(nèi)容改變,因此,僅根據(jù)頒發(fā)者證書的DN可能會查找到多張DN相同而其余內(nèi)容不同的數(shù)字證書,這些找到的多張數(shù)字證書,并不全是上一級數(shù)字證書的頒發(fā)者證書,因此需進一步驗證,確定出唯一一張數(shù)字證書,即為上一級數(shù)字證書的頒發(fā)者證書。本發(fā)明實施例根據(jù)數(shù)字證書的句柄,來驗證查找到的多張數(shù)字證書。
例如,對于待驗證數(shù)字證書,用戶將待驗證數(shù)字證書的句柄發(fā)送給根據(jù)用戶發(fā)送的待驗證數(shù)字證書的句柄,然后根據(jù)句柄確定的待驗證數(shù)字證書的DN從證書庫中查找到DN與待驗證數(shù)字證書的DN相同的數(shù)字證書。若查找到多張數(shù)字證書,則根據(jù)待驗證數(shù)字證書的句柄,確定待驗證數(shù)字證書的其它信息,如加密算法、密鑰等,與查找到的多張數(shù)字證書進行對照,從找到的多張數(shù)字證書中確定出與待驗證數(shù)字證書各方面信息均相同的數(shù)字證書,作為第1級數(shù)字證書。這里,若查找到的多張數(shù)字證書均與待驗證數(shù)字證書均不相同,則認為本地證書庫中沒有待驗證數(shù)字證書的存檔,可以判定待驗證數(shù)字證書無效。此外,若根據(jù)DN只找到一個數(shù)字證書,也需要根據(jù)待驗證數(shù)字證書的句柄對找到的一張數(shù)字證書進行驗證,若各個相關信息均相同,則將找到的數(shù)字證書作為第1級數(shù)字證書。
之后根據(jù)數(shù)字證書的頒發(fā)者證書的DN找到的數(shù)字證書若為多張,則用找到的多張數(shù)字證書分別對該數(shù)字證書驗證簽名,從多張數(shù)字證書中確定出與頒發(fā)者證書相符的唯一一張數(shù)字證書。即,根據(jù)第m級數(shù)字證書的頒發(fā)者證書的標識信息,遍歷所述證書管理機構查找到標識信息與所述第m級數(shù)字證書的頒發(fā)者證書的標識信息相同的第m+1級數(shù)字證書之后,還包括:
若查找到標識信息與所述第m級數(shù)字證書的頒發(fā)者證書的標識信息相同的多張數(shù)字證書,則用查找到的所述多張數(shù)字證書的公鑰分別對所述第m級數(shù)字證書的數(shù)字簽名進行解密,解密成功的數(shù)字證書作為所述第m+1級數(shù)字證書。
之后,根據(jù)第1級數(shù)字證書的句柄可以確定出第1級數(shù)字證書的頒發(fā)者證書,從而能根據(jù)第1級數(shù)字證書的頒發(fā)者證書的DN,從證書庫中查找DN相同的數(shù)字證書。利用找到的多張數(shù)字證書對第1級數(shù)字證書進行驗證簽名,確定出一張數(shù)字證書為第1級數(shù)字證書的頒發(fā)者證書,作為第2級數(shù)字證書。與確定第2級數(shù)字證書相類似,第3級數(shù)字證書、第4級數(shù)字證書……直至第N級數(shù)字證書均可根據(jù)前一級數(shù)字證書的頒發(fā)者證書的DN從證書庫中查找驗證,最終每一級確定出一張數(shù)字證書。
利用每一級的數(shù)字證書構建證書鏈,即步驟S103包括:
利用第k+1級數(shù)字證書的公鑰,解密第k級數(shù)字證書的數(shù)字簽名,其中,1≤k<N,且k為整數(shù);
若從第1級數(shù)字證書到根證書均解密成功,并且每一級數(shù)字證書的有效性,CRL證書吊銷列表均驗證成功,則證書鏈構建成功。
進一步,為了增加有效性驗證結(jié)果的準確性,需驗證找到的各個數(shù)字證書的有效性,即步驟S102之后,步驟S103之前,包括:
針對所述N級數(shù)字證書中的每一級數(shù)字證書,進行有效性驗證,若所述數(shù)字證書的有效性驗證通過,則利用所述數(shù)字證書構建證書鏈;
所述數(shù)字證書的有效性驗證至少包括以下內(nèi)容之一:所述數(shù)字證書的序列號驗證、有效期驗證和證書吊銷列表CRL(證書吊銷列表,Certifi證書管理機構te Revo證書管理機構tion List)查詢。
具體來說,在建立證書鏈之前,需對每個數(shù)字證書進行有效性驗證。只有當數(shù)字證書被證明是有效的,才會作為證書鏈中的一個元素,構建證書鏈。數(shù)字證書的有效性驗證至少包括有效期驗證或CRL查詢。
有效期驗證就是檢查數(shù)字證書使用的日期是否合法,是否過期。CRL查詢,是檢查數(shù)字證書是否已經(jīng)作廢,并發(fā)布在CRL中。數(shù)字證書因私鑰泄密等原因,需要廢止時,需向證書管理機構聲明作廢。證書管理機構實時地在證書庫中進行發(fā)布,以供訪問時進行查詢。
上述有效性驗證還可以包括如數(shù)字證書的序列號驗證。序列號驗證是指核查數(shù)字證書的簽名實體序列號是否與簽發(fā)者證書的序列號相一致,從而驗證數(shù)字證書的真?zhèn)巍r炞C操作過程是:該數(shù)字證書中的序列號,與證書管理機構證書中的證書序列號,二者應該相一致,否則認為該數(shù)字證書不是可信任的證書管理機構所簽發(fā),即待驗證數(shù)字證書無效。
需要說明的是,本發(fā)明實施例中的有效性驗證不僅限于上述三項內(nèi)容,上述內(nèi)容僅為舉例,不作限制。
本發(fā)明實施例中,若某數(shù)字證書未通過有效性驗證,則證書鏈無法成功建立,也認為待驗證數(shù)字證書無效,返回失敗碼。
為了更清楚地理解本發(fā)明,下面以具體實例對上述流程進行詳細描述,其中,具體流程如圖2所示,包括:
S201、接收用戶發(fā)送的待驗證數(shù)字證書X的句柄。
S202、根據(jù)數(shù)字證書X的句柄,取出數(shù)字證書X的DN。
S203、遍歷證書庫,找出DN與數(shù)字證書X的DN相同的數(shù)字證書。
S204、根據(jù)數(shù)字證書X的句柄,從DN與數(shù)字證書X的DN相同的數(shù)字證書中確定出第1級數(shù)字證書。
S205、i=1。
S206、根據(jù)第i級數(shù)字證書的句柄獲取第i級數(shù)字證書的頒發(fā)者證書的DN,根據(jù)第i級數(shù)字證書的頒發(fā)者證書的DN,遍歷證書庫,找出DN與第i級數(shù)字證書的頒發(fā)者證書的DN相同的數(shù)字證書。
S207、根據(jù)第i級數(shù)字證書的句柄,從DN與第i級數(shù)字證書的頒發(fā)者證書的DN相同的數(shù)字證書中確定出第i+1級數(shù)字證書,從找到的一張或多張數(shù)字證書中確定一張數(shù)字證書為第i+1級數(shù)字證書。
S208、判斷第i+1級數(shù)字證書是否為根證書,若是,則執(zhí)行步驟S210;否則執(zhí)行步驟S209。
S209、i++,執(zhí)行步驟S206。
S210、對每一級數(shù)字證書進行有效性驗證。
S211、判斷每一級數(shù)字證書是否均有效,若每一級數(shù)字證書均驗證為有效,則執(zhí)行步驟S212;否則執(zhí)行步驟215。
S212、利用每一級數(shù)字證書,構建證書鏈。
S213、若證書鏈構建成功,執(zhí)行步驟S214,否則執(zhí)行步驟S215。
S214、數(shù)字證書X有效。
S215、數(shù)字證書X無效,返回失敗碼。
基于相同的技術構思,本發(fā)明實施例還提供一種數(shù)字證書有效性的驗證裝置,如圖3所示,包括:
查詢模塊1,用于確定N級數(shù)字證書,其中所述N級數(shù)字證書中第1級數(shù)字證書是根據(jù)待驗證數(shù)字證書的標識信息確定的,后一級數(shù)字證書的標識信息與前一級數(shù)字證書的頒發(fā)者證書的標識信息相同,第N級數(shù)字證書為根證書,N為正整數(shù);
構建模塊2,用于根據(jù)確定的N級數(shù)字證書,構建證書鏈,其中構建的證書鏈中包括N張數(shù)字證書,且同一證書鏈中的任意兩張數(shù)字證書的級數(shù)不同;
反饋模塊3,用于若證書鏈構建成功,則確定所述待驗證數(shù)字證書有效。
可選的,所述查詢模塊1,具體用于:
根據(jù)所述待驗證數(shù)字證書的標識信息,從證書管理機構中查找到標識信息與所述待驗證證書的標識信息相同的第1級數(shù)字證書;
根據(jù)第m級數(shù)字證書的標識信息,從所述證書管理機構中查找到標識信息與所述第m級數(shù)字證書的頒發(fā)者證書的標識信息相同的第m+1級數(shù)字證書,其中,1≤m<N,且m為整數(shù)。
可選的,所述查詢模塊1,具體用于:
若查找到標識信息與所述待驗證證書的標識信息相同的多張數(shù)字證書,則根據(jù)所述待驗證數(shù)字證書句柄中的摘要算法,公鑰長度等信息,從查找到的所述多張數(shù)字證書中確定一張數(shù)字證書,作為所述第1級數(shù)字證書;
若查找到標識信息與所述第m級數(shù)字證書的頒發(fā)者證書的標識信息相同的多張數(shù)字證書,則用查找到的所述多張數(shù)字證書的公鑰分別對所述第m級數(shù)字證書的數(shù)字簽名進行解密,解密成功的數(shù)字證書作為所述第m+1級數(shù)字證書。
可選的,所述構建模塊2,具體用于:
利用第k+1級數(shù)字證書的公鑰,解密第k級數(shù)字證書的數(shù)字簽名,其中,1≤k<N,且k為整數(shù);
若從第1級數(shù)字證書到根證書均解密成功,則證書鏈構建成功。
可選的,還包括驗證模塊4,用于:
針對所述N級數(shù)字證書中的每一級數(shù)字證書,進行有效性驗證,若所述數(shù)字證書的有效性驗證通過,則所述構建模塊利用所述數(shù)字證書構建證書鏈;
所述數(shù)字證書的有效性驗證至少包括所述數(shù)字證書的有效期驗證或證書吊銷列表CRL查詢。
可選的,所述反饋模塊3,還用于:若證書鏈構建失敗,則返回失敗碼。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實施例,但本領域內(nèi)的技術人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。