0

在安装我们的应用程序期间,我们会生成一个自签名证书。我们正在使用 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)
4

2 回答 2

1

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

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

于 2013-10-02T16:07:32.340 回答
0

我意识到,当我们想将证书写入文件时,最好根本不将它们插入到存储中。

因此,我现在在临时存储中生成证书。

hStore = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, NULL, 0, NULL);
if (!hStore) {
    return 0;
}
于 2013-11-12T10:56:14.143 回答