X509Store 的工作方式不同于 MMC+Certificate/Import。那里出了什么问题?

X509Store works different than just MMC+Certificate/Import. What is wrong there?

我对 X509Store 有一个奇怪的问题。我有一个小工具,可以以非常经典的方式从商店中添加/删除东西:

        var pfxContainer = File.ReadAllBytes(strPFXFileName);
        X509Certificate2 x509Cert = new X509Certificate2(pfxContainer);
        X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
        try
        {
            store.Open(OpenFlags.ReadWrite);
            store.Add(x509Cert);
            store.Close();
        }

一切都将在具有管理员权限的控制台上完成。一切似乎都很好——没有错误,没有异常。证书在那里。现在,如果我尝试从 IIS/Binding 中选择此证书,我会收到奇怪的消息:enter image description here “指定的登录会话不存在。它可能已经被终止了……”

但是证书没问题 - 如果我使用 MMC 导入相同的证书 – 完全没有问题,我可以从 IIS 中选择和使用它。是否存在 certutil.exe 和错误 87 之类的错误,或者我遗漏了什么?

为了使用 IIS,证书必须是可导出的并且包含私钥。

为此,您必须指定 Exportable 和 PersistKeySet 标志:

X509Certificate2 cert = new X509Certificate2(PfxFile, Password,
                        X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);