我有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/

10-10 14:56