linux openssl p7b,c – 如何使用openssl从PKCS7.p7b证书文件中读取证书文件?

本文介绍了一个基于OpenSSL的程序,用于解析PKCS#7格式的文件,并从中提取证书。该程序支持从DER或PEM格式的输入中读取,并能够将提取到的证书以文本形式或PEM格式输出。

我使用了以下程序:

#include

#include

#include

#include

#include

int main(int argc, char **argv)

{

PKCS7 *p7 = NULL;

BIO *in = BIO_new(BIO_s_file());

BIO *out = BIO_new(BIO_s_file());

int der = 0; /* Input from DER or PEM ? */

int text = 0; /* Dump text or output PEM ? */

STACK_OF(X509) *certs = NULL;

int i;

CRYPTO_malloc_init(); \

ERR_load_crypto_strings();

OpenSSL_add_all_algorithms();

BIO_set_fp(out, stdout, BIO_NOCLOSE);

BIO_read_filename(in, argv[1]);

p7 = der ?

d2i_PKCS7_bio(in, NULL) :

PEM_read_bio_PKCS7(in, NULL, NULL, NULL);

i = OBJ_obj2nid(p7->type);

if(i == NID_pkcs7_signed) {

certs = p7->d.sign->cert;

} else if(i == NID_pkcs7_signedAndEnveloped) {

certs = p7->d.signed_and_enveloped->cert;

}

for (i = 0; certs && i < sk_X509_num(certs); i++) {

X509 *x = sk_X509_value(certs,i);

if(text) {

X509_print(out, x);

} else {

PEM_write_bio_X509(out,x);

}

}

}

它基于openssl-1.0.0d / apps / pkcs7.c,并且可以轻松编译(在Linux或Mac OS X上)(前提是将其保存为readp7.c):

gcc -o readp7 readp7.c -lcrypto

您可以使用openssl创建文件并按如下方式读取它们:

openssl crl2pkcs7 -nocrl -certfile a.crt -certfile b.crt -out test.p7b

./readp7 test.p7b

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值