x509_verify_cert函式負責用來驗證證書的有效性,函式原型如下
int x509_verify_cert(x509_store_ctx *ctx),驗證成功返回1,失敗返回其他值,失敗的原因可以通過
long ncode = x509_store_ctx_get_error(ctx);
const char * pcherror = x509_verify_cert_error_string(ncode);得到
下面來演示一下如何使用這個函式
int verifycertificate()
//為證書鏈上下文分配記憶體
ctx = x509_store_ctx_new();
//初始化證書鏈上下文,certchain是證書鏈,cert是要被驗證的證書
x509_store_ctx_init(ctx,certchain,cert,null);
//在證書驗證之前,可以通過設定flags來確定驗證的內容,flags的內容在x509_vfy.h中宣告/* certificate verify flags */之後就是
x509_store_ctx_set_flags(ctx,flags);
//驗證證書,根據返回值可以確認x509證書是否有效,也可以根據x509_store_ctx_get_error和x509_verify_cert_error_string函式來確認無效原因
int nx509verify = x509_verify_cert(ctx);
if (1 != nx509verify )
//釋放記憶體,這個很重要
if(null != ctx)
if (null != certchain)
return nx509verify;
}注:在驗證證書的過程中,證書鏈的構造一定要完整,例如root為自簽名的證書,頒發證書給topca,topca頒發證書給secondca,secondca頒發證書給user
為了驗證user的證書,root,topca,secondca都要在證書鏈中。
接下來我們看看x509_verify主要驗證的內容
int x509_verify_cert(x509_store_ctx *ctx)
在internal_verify有檢查證書有效期的函式,即x509_cmp_time(const asn1_time *ctm, time_t *cmp_time);
asn1_time可以通過x509_get_notbefore()與x509_get_notafter()兩個函式來得到,time_t為從2023年1月1日凌晨算起的秒數,
X 509證書校驗
x.509證書校驗 這裡討論openssl 中如何應用 crls 和來自證書體系的其他證書來進行證書校驗。為此需要使用 x.509 包的功能函式。ssl協議實現已經處理了很多這裡將要討論的東西,即使如此,一些工作還是需要我們親歷親為,特別是當我們希望在證書校驗過程中使用 crls 的校驗,大部分情況...
如何使用X 509證書
簡介 在怎樣把x.509證書部署到生產系統之前,你需要了解ssl tsl協議中所支援的認證場景的區別。你部署證書的方式取決於 你選擇的是哪種認證場景。單向認證 在單向認證場景中,伺服器在ssl握手期間會將自己的證書分發給客戶端,以便客戶端能據此驗證目標身份。所以在 此情景下,伺服器相對於客戶端是認證...
什麼是x 509證書?
在使用openssl命令的時候,會用到opessl x509,那麼這個其中的x509代表的是什麼意思呢 本文件就進行簡要的說明。openssl中的x509 x.509.x.509證書主要是基於itu x.509標準的一種數字證書,x.509標準 定義了pki public key infrastru...