我有一个.cer文件以" ----- BEGIN CERTIFICATE -----"开头。并以" ----- END CERTIFICATE -----"结束,现在我需要加载它以检查openssl的签名,这些是我尝试过的:
FILE *pub_fp = fopen(certpath.c_str(), "r");
1. RSA *rsa = PEM_read_RSA_PUBKEY(pub_fp, NULL, NULL, NULL);
2. RSA *rsa = PEM_read_RSAPublicKey(pub_fp, NULL, NULL, NULL);
// rsa为NULL
3. X509 *x509 = PEM_read_X509(pub_fp, NULL, 0, NULL);
4. x509 = d2i_X509_fp(pub_fp, NULL);
5. unsigned char *str;
fread(str, 1, cert_len, fp);
x509 = der_to_x509(ca_der, ca_der_len);
// x509为NULL
我已经使用CertificateFactory,Certificate,Signature在Java中测试了.cer文件,它检查正常。
我现在能做什么?我错过了什么吗?
答案 0 :(得分:1)
你究竟想做什么?
X509 *x509 = PEM_read_X509(pub_fp, NULL, 0, NULL);
适合我并读取X509证书。您可以从中检索包括公钥的证书组件。
答案 1 :(得分:0)
当我尝试在Qt中加载cer文件时,我使用此代码,但您可以简单地用任何语言编写等效文件。基本上我在生物中读取cer文件,然后将bio转换为x509。
OpenSSL_add_all_algorithms();
ERR_load_crypto_strings();
BIO* bio_cert = NULL;
X509 *maincert = NULL;
QByteArray ba = FILE_ADDRESS.toLatin1();
const char *c_str2 = ba.data();
bio_cert = BIO_new_file(c_str2, "rb");
if(bio_cert != NULL)
maincert = d2i_X509_bio(bio_cert, NULL);