我通过以下方式创建自签名证书:
openssl req -new -x509 -key privkey.pem -out cert.pem -days 1095
如何将 cert.pem 传递给i2d_X509?我需要这样的东西:
len = i2d_X509(".cert.pem", &buf);
但我的证书在 PEM 文件中..
这是我的代码:(我在 https://www.openssl.org/docs/crypto/d2i_X509.html 中使用了示例)
#include <openssl/x509.h>
#include <stdio.h>
int main(void)
{
int len,i;
unsigned char *buf;
buf = NULL;
len = i2d_X509((X509*)".cert.pem", &buf);
if (len < 0){
printf("error len < 0");
return -1;
}
printf("buf:");
for (i = 0; i < len ; i++)
printf("0x%02X", *(buf+i));
return 0;
}
如何将 cert.pem 传递给i2d_X509?
你没有/不能。您需要使用 PEM_read_bio_X509
读取证书。 PEM_read_bio_X509
返回一个X509*
。然后你可以把它传递给i2d_X509
.
完成后,请务必在指针上调用X509_free
。
或者,按照菲利普的建议进行操作 - 将其转换为 ASN.1/DER,然后将其与 d2i_X509_fp
一起使用。
另请参阅 OpenSSL 手册页中有关 PEM 读/写函数的信息。