2017-04-24 59 views
2

我正在使用已验证证书中存在的CRL对证书吊销检查进行编程。 对于支票,我还需要发行人证书。以编程方式获取颁发者证书C++

我在哪里可以找到发行人的URL地址?

我知道我可以使用此功能得到发行人的名字:

X509_NAME *X509_get_issuer_name(const X509 *); 

但我需要得到的URL,从那里我能得到发行人证书调用X509_CRL_verify(X509_CRL *, EVP_PKEY *) 功能。

+0

您可能想避免接受答案。非现场链接并不真正被认为是堆栈溢出的答案。没有人向您提供该部分任务的代码。 – jww

回答

2

有没有这样的事情作为发行人的网址,我不明白你为什么需要一个。 对于CRL检查,您需要改为包含在原始证书中的CRL分发点。有关使用X509_get_ext_d2iNID_crl_distribution_points从代码中提取这些信息的代码,请参阅C++ Check CRL For Revocation

+0

这就是我正在查看的确切源代码。虽然有需要发行者的X509文件的函数is_revoked_by_crl(X509 * x509,X509 *发行者,X509_CRL * crl_file) 。我唯一能想到的就是我所在机器的整个证书链。 – Dracke

+0

@Dracke:所以你不需要发行者的URL,而是发行者的证书,这是非常不同的,即链接与实际数据。为了使用由发行者签署的CRL,您需要信任发行者,这意味着证书应该位于您的信任存储中(即通常使用openssl的特殊文件或目录)。如果您构建证书链,则无论如何您都应该执行此操作来验证证书,您将获得此证书。有关详细信息,请参阅[使用OpenSSL API以编程方式验证证书链](https://stackoverflow.com/questions/16291809/)。 –

+0

如果我正在对输入证书进行验证,是否可以使用issuer参数跳过crl撤销? – Dracke

相关问题