openssl verify 驗證證書

2021-06-09 16:09:33 字數 2642 閱讀 1299

介紹openssl verify 命令對證書的有效性進行驗證,verify 指令會沿著證書鏈一直向上驗證,直到乙個自簽名的ca。

環境根據建立自簽名的root ca,然後再用root ca簽發另乙個ca(我命名為alice),在用alice簽發使用者second的證書。最後我們對bob的證書進行驗證。

目錄結構為

├─alice

│  └─democa

│      ├─newcerts

│      └─private

├─democa

│  ├─newcerts

│  └─private

└─second

語法openssl verify[-capath directory] [-cafile file] [-purpose purpose] [-policy arg] [-ignore_critical] [-crl_check] [-crl_check_all] [-policy_check] [-explicit_policy] [-inhibit_any] [-inhibit_map] [-x509_strict] [-extended_crl] [-use_deltas] [-policy_print] [-untrusted file] [-help] [-issuer_checks] [-verbose] [-] [certificates]

-capathdirectory     指定ca證書所在的目錄,這個目錄下可能存在證書鏈中的多個證書檔案。為了對這個目錄下的證書進行檢索,證書檔案的命名需要遵循******xx.0,其中******xx是openssl x509 -hash -in 證書, 的輸出值,8個字母或數字。「.0」是要有的。

用root ca對alice的證書進行驗證,使用-capath選項。我們首先要x509命令的 -hash選項計算root ca的hash值。我們假定capath目錄為「capath」,首先建立目錄capath,我們這次的工作目錄依然為e:\openssl\foo.

e:\openssl\foo>mkdir capath

e:\openssl\foo>openssl x509 -hash -in democa\cacert.pem -noout

3ff5a598

e:\openssl\foo>cp democa\cacert.pem capath\3ff5a598.0

對alice的證書進行驗證

e:\openssl\foo>openssl verify -capath capath alice\democa\cacert.pem

alice\democa\cacert.pem: ok

對bob的證書進行驗證。在對bob證書驗證前,需要先對alice的證書進行x509 -hash ,計算證書hash,並重命名複製到capath目錄下。

e:\openssl\foo>openssl x509 -hash -in alice\democa\cacert.pem -noout  # 計算hash

b9c7a1d7

e:\openssl\foo>cp alice\democa\cacert.pem capath\b9c7a1d7.0 # 按hash值重新命名,並放到capath指定的目錄下

e:\openssl\foo>openssl verify -capath capath bob\bob.pem # 驗證

bob\bob.pem: ok

-cafilefilename    指定ca的證書檔案,pem格式,這個檔案裡可能不只包含乙個證書。如果需要對證書鏈進行驗證,指定的檔案中應包含所有的證書。加入頂級ca證書檔名為0.pem,一級ca證書檔案為1.pem,二級證書檔案為2.pem,待驗證的證書檔案是eve.pem,那麼需要先將0.pem,1.pem證書檔案的內容包含到2.pem中。證書檔案都是文字檔案,簡單地使用cat命令就可以進行連線。

cat 0.pem >> 1.pem

cat 1.pem >> 2.pem

使用cafile選項,對bob證書進行驗證

e:\openssl\foo>cat democa\cacert.pem >> alice\democa\cacert.pem

e:\openssl\foo>openssl verify -cafile alice\democa\cacert.pem bob\bob.pem

bob\bob.pem: ok

其他的,待完善...

WPF驗證之 必填驗證

要事先必填驗證,首先要重寫validationrule類的validate方法,然後在binding中指定對應的validationrule。第一步 重寫validationrule的validate public class requiredvalidationrule validationrul...

python驗證 python驗證登入

乙個web2.0時代的 自然少不了使用者註冊,登入,驗證的功能,那麼python可以怎樣實現登入驗證呢 這裡我們使用裝飾器來做登入驗證 構成 假設我們有這樣乙個 是乙個類似與這種多個使用者的 每個使用者都又乙個自己的管理介面,內部也應該有乙個管理員系統 未登入使用者 登入的普通使用者,就是我們 管理...

python表單驗證 表單驗證

django有乙個form類為我們提供了強大的表單驗證提交。1 建立form from django import forms class commentform forms.form name forms.charfield label 您的姓名 max length 100 email form...