我在 char[] 中有服务器证书。现在我也可以访问 CA 证书文件了。如何验证 char[] 变量中加载的证书。
请帮忙
我在 char[] 中有服务器证书。现在我也可以访问 CA 证书文件了。如何验证 char[] 变量中加载的证书。
请帮忙
我不确定这篇关于使用 OpenSSL验证使用证书存储的博客文章是否不是您想要的。
我已经解决了这个问题。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*。