Openssl驗證證書的有效性
好久沒寫部落格了,直接上程式碼
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <openssl/x509.h> #include <openssl/x509_vfy.h> int LoadCert(unsigned char * szFilePath, unsigned char *pbCert, int size) { int len = 0; if(szFilePath == NULL || pbCert == NULL || size < 128) { return -1; } FILE *fp = fopen(szFilePath, "rb"); if ( NULL == fp) { return -2; } len = fread(pbCert, 1, size, fp); fclose(fp); return len; } int VerifyCert(unsigned char *pbCaCert, int nCaLen, unsigned char *pbCert, int nCertLen, unsigned char *pbCN, int size) { int rv = -1; if(pbCaCert == NULL || nCaLen < 128 || pbCert == NULL || nCertLen < 128) { return rv; } X509 *ca = NULL; X509 *cert = NULL; X509_STORE *caStore = NULL; X509_STORE_CTX *ctx = NULL; X509_NAME *subject = NULL; OpenSSL_add_all_algorithms(); caStore = X509_STORE_new(); ctx = X509_STORE_CTX_new(); ca = d2i_X509(NULL, ( const unsigned char **)&pbCaCert, nCaLen); if(ca == NULL) { return -2; } rv = X509_STORE_add_cert(caStore, ca); if ( rv != 1 ) { rv = -3; goto EXIT_VERIFY; } cert = d2i_X509(NULL, ( const unsigned char **)&pbCert, nCertLen); if(cert == NULL) { rv = -4; goto EXIT_VERIFY; } rv = X509_STORE_CTX_init(ctx, caStore, cert, NULL); if ( rv != 1 ) { rv = -5; goto EXIT_VERIFY; } rv = X509_verify_cert(ctx); if ( rv != 1 ) { fprintf(stderr, "X509_verify_cert fail, rv = %d, error id = %d, %s\n", rv, ctx->error, X509_verify_cert_error_string(ctx->error)); rv = (rv == 0 ? 1 : rv); goto EXIT_VERIFY; } subject = X509_get_subject_name(cert); if(subject) { X509_NAME_get_text_by_NID(subject, NID_commonName, pbCN, size); } rv = (rv == 1 ? 0 : rv); EXIT_VERIFY: if(cert) X509_free(cert); if(ca) X509_free(ca); if(caStore) X509_STORE_free(caStore); if(ctx) { X509_STORE_CTX_cleanup(ctx); X509_STORE_CTX_free(ctx); } return rv; } int main(void) { int rv = 0; int i = 0; int caLen = 0; int certLen =0; unsigned char cn[255] = {0}; unsigned char cert[4096] = {0}; unsigned char ca[4096] = {0}; caLen = LoadCert("ca.cer", ca, 4096); certLen = LoadCert("Jinhill.cer", cert, 4096); rv = VerifyCert(ca, caLen, cert, certLen, cn, 255); printf("rv=%d, cn=%s\n", rv, cn); return 0; }
相關推薦
Openssl驗證證書的有效性
好久沒寫部落格了,直接上程式碼#include <stdio.h> #include <string.h> #include <stdlib.h> #include <openssl/x509.h> #include <o
openssl 驗證證書是否是某個CA證書籤發
int VerifyCertByIssuer(X509 *cert, X509 *issuer) { int res = 0; EVP_PKEY *pubkey = 0; if (X509_check_issued(issuer, cert) != X509_V_OK
獲取數字證書相關資訊,證書有效性驗證,RSA加密和解密功能之獲取證書相關資訊
//公鑰 private PublicKey pk; /** 後臺將證書以byte陣列的形式傳入 * @param bytes,數字證書crt傳入的byte陣列 * @return */ public InfoEntity getCertificateInfo(
OPENSSL X509證書驗證
步驟: 1)初始化環境 a.新建證書儲存區X509_STORE_new() b.新建證書校驗上下文X509_STORE_CTX_new() 2)匯入根證書 a.讀取CA證書,從DER編碼格式化為X509結構d2i_X509() b.將CA證書匯入證書儲存區X509_STORE
驗證證書的有效性(cryptoapi)
使用CertGetIssuerCertificateFromStore函式來驗證證書的有效性,其函式宣告如下:PCCERT_CONTEXT WINAPI CertGetIssuerCertificateFromStore( HCERTSTORE , //[in]
數字證書有效性驗證
數字證書的有效性驗證主要從三個方面: 1,數字證書有效期驗證 2,根
openssl的證書鏈驗證
name 匹配 enc 信任 key 查找 加載順序 分支管理 存在 使用openssl驗證證書鏈可以用以下命令: debian:/home/zhaoya/openssl#openssl verify -CAfile ROOT_CERT USER_CERT 其中的ROOT
openssl https證書
address world 解密 cipher nginx acer frame agen detail 今天摸索了下 HTTPS 的證書生成,以及它在 Nginx 上的部署。由於博客托管在 github 上,沒辦法部署證書,先記錄下,後續有需要方便快捷操作。本文的闡述不一
openssl 生成證書基本原理
detail 數據傳輸 它的 註釋 有一個 -i gen 所在 sig 摘自:http://blog.csdn.net/oldmtn/article/details/52208747 1. 基本原理 公司一個項目要進行交易數據傳輸,因為這個項目銀行那邊也是剛剛開始啟動,所有
使用 openssl 生成證書
安全 ssl 證書 一、openssl 簡介openssl 是目前最流行的 SSL 密碼庫工具,其提供了一個通用、健壯、功能完備的工具套件,用以支持SSL/TLS 協議的實現。官網:https://www.openssl.org/source/構成部分密碼算法庫密鑰和證書封裝管理功能SSL通信AP
使用OpenSSL生成證書並配置Https
兩種 做的 class 令行 .net 基本 我們 服務端 mage 1、密鑰、證書請求、證書概要說明 在證書申請簽發過程中,客戶端涉及到密鑰、證書請求、證書這幾個概念。我們以申請證書的流程說明三者的關系。客戶端(相對於CA)在申請證書的時候,大體上有三個步驟: 第一步:
Openssl生成證書流程
Openssl生成證書流程Openssl生成證書流程偶然想到在內網配置https,就梳理了下利用openssl與ca生成證書的過程。生成過程分為服務端跟客戶端,這裏我在一臺上測試。一.介紹CA是Certificate Authority的縮寫,也就是認證中心。CA的功能有:頒發證書,更新證書,撤銷證書和驗證證
【本地服務器】利用openssl生成證書
.html num href 創建證書 inf blog article nop cmd (一)下載openssl軟件,解壓,進入bin目錄 下載地址 (二)1.在當前bin目錄,按住shift鍵右擊,選擇"在此處打開命令窗口" 2.打開
openssl生成證書 - CSDN部落格
大家都可以生成公鑰、私鑰對,無法確認公鑰對到底是誰的。 如果能夠確定公鑰到底是誰的,就不會有這個問題了。例如,如果收到“黑客”冒充“伺服器”發過來的公鑰,經過某種檢查,如果能夠發現這個公鑰不是“伺服器”的就好了。 為了解決這個問題,數字證書出現了,它可以解決我們上面的問題。先大概看下什麼是數字證書
Emailcamel.Com - 免費線上批量驗證郵箱有效性
EmailCamel.com- 免費線上批量驗證郵箱有效性,支援Excel匯入、報告匯出 準確率 如果對方伺服器沒有拒絕驗證,則都可以驗證!海外分散式伺服器 多臺海外伺服器,保證Gmail等國外郵箱,不會因為'牆'的原因而無法驗證!驗證快速 同域郵箱持久化技術!雲端儲存 驗
靈活多變的keytool和openssl生成證書,應用tomcat和nginx
靈活多變的keytool和openssl生成證書,應用tomcat和nginx 文章目錄 前言 什麼是證書?為什麼要使用證書? 證書格式轉換 證書格式 keytool是什麼? 主要格式 test.
如何利用OpenSSL生成證書
此文已由作者趙斌授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 一、前言 最近為了測試內容分發網路(Content Delivery Network,簡稱 CDN)新增的新功能,支援HYTTPS安全加速功能,需要對證書的有效性進行驗證,於是乎需要自己生成合法的、非法的、過期的證書。
openssl轉換證書及檢視證書資訊
title: openssl轉換證書及檢視證書資訊 date: 2018-1-4 16:29:00 categories: - Android tags: - openssl - shell 生成客戶端檔案 1.生成客戶端key openssl genrsa -
Java PDF數字簽名(二) - 驗證簽名有效性
上一篇文章介紹了如何在Java中給PDF文件新增數字簽名,這篇文章接著介紹如何驗證數字簽名的有效性。 步驟: 1.建立一個Java project,並新增一個class VerifySignature.JAVA 2.下載Free Spire.PDF for JAVA包並解壓縮,然後從
openssl 檢查證書是否過期
echo | openssl s_client -servername ×××w.youqiantu.com -connect ×××w.youqiantu.com:443 2>/dev/null |