我正在尝试从 pfx 文件加载带有私钥的证书并将其导入 LocalMachine/My (Personal) 证书存储。我的代码工作正常,只是当我在商店中查看证书时它说
“找不到关联的私钥”
此外,certutil 说
“找不到用于解密的证书和私钥”
奇怪的是,我的代码在 Windows 7 开发盒上运行良好,但在 Windows Server 2008 R2 或 2012 上却不行。同样奇怪的是,如果我使用 mmc 手动导入 pfx 文件,私钥似乎可以正常保存。
这是我用来加载文件和导入的代码:
// load the certificate from pfx file
X509Certificate2 cert = new X509Certificate2(filePath, pfxPassword, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);
// import to the store
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite); //tried MaxAllowed as well
store.Add(caCert);
store.Close();
有任何想法吗?对于背景信息,我还在前面的步骤中使用 BouncyCastle 在代码中生成证书。我在该步骤中遇到了一些保留私钥的问题,但通过这个问题的答案得到了解决。尝试导入的代码也以管理员身份运行。