我有target.cert
文件,想获取证书endDate和startDate之类的详细信息
openssl pkcs7 -in target.cert -inform DER -print_certs -out cert_pem
openssl x509 -in cert.pem -enddate -startdate -noout
输出的是开始日期和结束日期,并且希望通过C ++代码执行相同的操作。
FILE* fp;
if (!(fp = fopen("target.cert", "rb"))) {
fprintf(stderr, "Error reading input pkcs7 file\n" );
exit(1);
}
PKCS7 *p7;
p7 = d2i_PKCS7_fp(fp, NULL);
但是
p7
没有诸如“ startDate”之类的字段,也没有解析字段的功能。如何通过C ++获取“开始/结束日期”?
最佳答案
开始日期和结束日期是针对您先前已经从PKCS#7结构中提取的X.509证书的。因此,您必须执行与命令行相同的操作:
提取证书;
通过检索开始/到期日期来获得有效期。
PKCS#7是一种容器格式,可能仅包含证书。但是,PKCS#7并不是一种证书,就像cookie罐不是cookie一样,即使它仅包含一个cookie也是如此。因此,您的容器名称target.cert
的选择非常错误,甚至对您来说也似乎不对劲。通常,我们使用扩展名.p7
或.pkcs7
代替。
关于c++ - 通过C++从PKCS7(CMS)获取详细信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58065209/