2 回答
TA贡献1851条经验 获得超3个赞
您的密钥被创建为临时密钥,因此当将其添加到持久存储时,该密钥将被丢弃。
如果要将密钥持久保存到商店证书中,您需要直接将其创建为持久密钥,或者导出到 PFX 然后重新导入(这是最简单的形式):
// If you're planning on saving to a LocalMachine store you should also | in the
// X509KeyStorageFlags.MachineKeySet bit.
X509KeyStorageFlags storageFlags = X509KeyStorageFlags.PersistKeySet;
X509Certificate2 certWithPersistedKey =
new X509Certificate2(
certWithEphemeralKey.Export(X509ContentType.Pkcs12, ""),
"",
storageFlags);
现在certWithPersistedKey可以像您期望的那样添加。
TA贡献1866条经验 获得超5个赞
X509Certificate2 cert = new X509Certificate2("a.pfx", "password", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(xCertificate);
原因 当使用 X509Certificate 或 X509Certificate2 类安装证书时,X509Certificate 或 X509Certificate2 默认情况下会创建一个临时容器来导入私钥。当不再引用私钥时,私钥将被删除。
解决方法 要为私钥创建永久密钥容器,必须使用 X509KeyStorageFlags.PersistKeySet 标志来防止 .NET 删除密钥容器。
- 2 回答
- 0 关注
- 270 浏览
添加回答
举报