【问题标题】:How to point to/access a cert file `CertCreateCertificateContext` function? (wincrypt api)如何指向/访问证书文件`CertCreateCertificateContext`函数? (wincrypt api)
【发布时间】:2020-07-30 15:10:34
【问题描述】:

Windows 编程/C++ 的一些新知识。我正在尝试将 .p7b 根证书文件安装到受信任的根证书存储中。我想使用 Windows Wincrypt 库。具体来说,这些是我从旧论坛获得的建议步骤:

  1. 使用您的证书内容字节呼叫CertCreateCertificateContext 为了获得PCCERT_CONTEXT
  2. 调用CertOpenSystemStore 并将szSubsystemProtocol 设置为“ROOT” 为了获得HCERTSTORE
  3. 使用上述HCERTSTORE 呼叫CertAddCertificateContextToStorePCCERT_CONTEXT

[这里是]CertCreateCertificateContext 的 api 文档。不知道如何将pbCertEncoded 指向我的实际证书文件。我应该把它指向路径吗?我必须加载证书吗?类型应该是什么?

【问题讨论】:

    标签: c++ windows certificate-store wincrypt p7b


    【解决方案1】:

    来自 Simon Rozman 在 post 中的回答:我们必须使用 CertOpenStore() 而不是 CertCreateCertificateContext(),只支持一个证书,而PKCS#7文件可以包含多个。

    证书存储打开后,您可以使用CertEnumCertificatesInStore() 从存储中检索单个证书的证书上下文。

    所以从我最初的步骤成功将 p7b 安装到根存储中:

    1. 为根存储和实际证书本身调用 CertOpenStore()。这将为您提供两个HCERTSTORE 句柄。

    2. 有一个 while 循环,只要证书上下文存在,就会将证书上下文添加到打开的根存储区(使用 CertAddCertificateContextToStore())(在打开的证书存储区上使用 CertEnumCertificatesInStore() 检查)。

    【讨论】:

      猜你喜欢
      • 2012-07-19
      • 2017-04-22
      • 2016-10-06
      • 2017-05-28
      • 2015-12-04
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多