c++ - 生成自签名证书会在商店中创建重复项

标签 c++ windows x509 certificate-store

在安装我们的应用程序期间,我们会生成一个自签名证书。我们正在使用 Crypt API 生成证书并将它们插入商店。

问题是我们在重新安装应用程序时生成了证书的拷贝。这只会让证书存储区变得一团糟。

如何检查证书是否已经存在?或者我可以使用一些选项来覆盖现有证书吗?

hStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, NULL, CERT_STORE_OPEN_EXISTING_FLAG | CERT_SYSTEM_STORE_CURRENT_USER, L"My");
if (!hStore) {
    return 0;
}
CertAddCertificateContextToStore(hStore, pCertificate, CERT_STORE_ADD_REPLACE_EXISTING, 0)

最佳答案

要检查您的证书是否已经存在,您可能需要使用 CertEnumSystemStore + CertFindCertificateInStore转储所有已安装的证书。然后您可以查询和测试您知道相同的属性(例如 X500 发行者名称)。

这里有一个相当深入的示例:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa382362.aspx

关于c++ - 生成自签名证书会在商店中创建重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19139126/

相关文章:

C++ 重载运算符、赋值、深度复制和加法

windows - Powershell 调用在服务器上有效,但通过 jenkins 返回错误

node.js - 从 Electron 应用程序打开 Windows 日期时间设置

x509 - 将证书添加到远程 x509store 缺少私钥

android - 在 iOS 上生成的 RSA key 不适用于 Android

javascript - 如何使用 PKCS7、CAdES、S/MIME (e-cpf/e-cnpj) 签署文档,以在浏览器上使用 javascript 创建 P7S 文件?

c++ - Boost.Spirit X3 编译时间因递归规则而爆炸

c# - native 上下文菜单 c#

python - 我们能知道 Python 脚本是从 Windows 还是文本终端启动的吗?

c++ - 如何获取多类型 vector 中的值(不添加 <type>)?