x509證書驗證

2022-01-12 23:09:05 字數 1284 閱讀 6529

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...