0

我在 char[] 中有服务器证书。现在我也可以访问 CA 证书文件了。如何验证 char[] 变量中加载的证书。

请帮忙

4

2 回答 2

0

我不确定这篇关于使用 OpenSSL验证使用证书存储的博客文章是否不是您想要的。

于 2012-06-07T05:46:37.720 回答
0

我已经解决了这个问题。OpenSSL 中有许多功能没有正确记录。当证书加载到内存或 char[] 时,应使用以下 openssl 来验证证书:

int X509_verify(X509*, EVP_PKEY*);

如果成功则返回 1,如果验证失败则返回 0。

X509* 是指向证书的指针。

BIO *bio;
X509 *peer_cert;
bio = BIO_new(BIO_s_mem());  
BIO_puts(bio, (const char*)peerCert_buf);
peer_cert = PEM_read_bio_X509(bio,NULL,NULL,NULL) ;

peerCert_buf 是一个 char[] 包含证书文件的内容。

EVP_PKEY* 是指向证书中存在的公钥的指针。您可以使用它从 CA 证书中提取公钥。

EVP_PKEY* key = X509_get_pubkey(ca);

ca 是包含 CA 证书的 X509*。

于 2012-06-08T05:53:05.333 回答