1

我想从 Windows 证书存储(假设我知道最终证书的位置)获取父证书(或所有证书链)。我需要获取每一个以构建我自己的自定义X509_STORE(使用OpenSSL)。

我认为正确的做法是:

  1. CertFindCertificateInStore使用(完成)获得第一个证书
  2. CertGetCertificateChain使用(完成)获取证书链
  3. 从链中提取证书(?)
  4. 对于链中的每个证书,使用d2i_X509(done)转换它

或者

  1. CertFindCertificateInStore使用(完成)获得第一个证书
  2. 获取父证书(如果存在)(?)
  3. 使用 转换它d2i_X509,转到 2。(完成)

然后创建商店。

那么要回答的问题是 - 如何使用 Windows 证书存储获取父证书或链中的所有证书?我可能在这里或多或少地遗漏了一些神秘的功能。

4

1 回答 1

2

作为CertFindCertificateInStore输出链上下文,可以使用漂亮的结构访问它的成员:

chainContext->rgpChain[0]->rgpElement[iCertIndex]->pCertContext->pbCertEncoded

其中iCertIndex0(结束证书)和chainSize -1(自签名根证书)之间。

于 2016-01-28T10:46:14.407 回答