我在重新启动应用程序后从X509Storage
检索私钥时遇到问题。
我正在使用:
我的流程:
1创建存储空间
Storage = new X509Store(StoreName.TrustedPublisher,
StoreLocation.CurrentUser);
Storage.Open(OpenFlags.ReadWrite);
2使用私钥创建证书
Cert = new X509Certificate2(
Convert.FromBase64String("...my certificate..."),
"",
X509KeyStorageFlags.UserKeySet |
X509KeyStorageFlags.PersistKeySet |
X509KeyStorageFlags.Exportable);
var privateKey = new RSACryptoServiceProvider();
privateKey.FromXmlString("...my private key relevant to certificate...");
privateKey.PersistKeyInCsp = true;
Cert.PrivateKey = privateKey;
3将证书插入存储空间
Storage.Add(Cert);
4验证具有私钥的证书是否存储
var certs = Storage.Certificates;
foreach (var cert in certs)
{
CertsView.Append("Name: " + cert.Subject + "; Has PK: "+ cert.HasPrivateKey + "\n");
}
5重新启动应用程序并再次验证
我可以检索已插入的证书。 但是,此时证书没有私钥。
我缺少什么?