C++ 以编程方式获取颁发者证书C++;

C++ 以编程方式获取颁发者证书C++;,c++,ssl,openssl,x509certificate,x509,C++,Ssl,Openssl,X509certificate,X509,我正在使用已验证证书中存在的CRL对证书吊销检查进行编程。 对于支票,我还需要发卡机构证书 我在哪里可以找到发卡机构的URL地址 我知道我可以使用此功能获取发卡机构的名称: X509_NAME *X509_get_issuer_name(const X509 *); 但是我需要获取url,从那里我可以获取发卡机构证书,以调用X509\u CRL\u verify(X509\u CRL*,EVP\u PKEY*) 功能。发行人没有URL这样的东西,我不明白你为什么需要它。 对于CRL检查,您需要

我正在使用已验证证书中存在的CRL对证书吊销检查进行编程。 对于支票,我还需要发卡机构证书

我在哪里可以找到发卡机构的URL地址

我知道我可以使用此功能获取发卡机构的名称:

X509_NAME *X509_get_issuer_name(const X509 *);
但是我需要获取url,从那里我可以获取发卡机构证书,以调用
X509\u CRL\u verify(X509\u CRL*,EVP\u PKEY*)

功能。

发行人没有URL这样的东西,我不明白你为什么需要它。
对于CRL检查,您需要原始证书中包含的CRL分发点。请参阅以获取与
NID\u crl\u分发点一起使用的代码,以从证书中提取这些信息。

这正是我正在查看的源代码。虽然有函数被_crl(X509*X509,X509*发卡机构,X509\u crl*crl_文件)撤销,但它需要发卡机构的X509文件。我唯一能想到的是我所在机器上的整个证书链。@Dracke:所以你不需要颁发者的URL,只需要颁发者的证书,这是非常不同的,即链接和实际数据。为了使用由颁发者签名的CRL,您需要已经信任颁发者,这意味着证书应该在您的信任存储中(即,通常是带有openssl的特殊文件或目录)。如果您构建了证书链,那么您将获得此证书。无论如何,您都应该这样做来验证证书。有关详细信息,请参阅。如果我正在验证输入证书,是否可以使用issuer参数跳过crl吊销?@Dracke:不,您不能跳过它。路径验证只检查证书是否由受信任的CA颁发,CRL/OCSP检查该CA是否已在以后吊销证书。当然,您还应该检查证书的主题是否符合预期(即,对于HTTPS服务器证书,URL的主机名)。还有过期时间和密钥使用…@Dracke:这太复杂了,无法发表评论,实际上已经不再是你最初问的问题了。但我建议您从OpenSSL源代码中了解一下,尤其是其中的函数检查。在那里,您可以看到如何检查证书(使用
X509\u verify\u cert
)以及如何提取链(查找
show\u chain
)。您可能希望避免接受答案。非站点链接并不能真正解决堆栈溢出问题。没有人向您提供该部分任务的代码。