C# 我们如何在CertStore中存储使用密码保护的pfx文件,如何使用密码检索它
是否可以使用密码保护存储在Cert Store中的pfx证书 我有以下功能,这是试图导出pfx文件使用密码和存储到客户端存储C# 我们如何在CertStore中存储使用密码保护的pfx文件,如何使用密码检索它,c#,certificate,C#,Certificate,是否可以使用密码保护存储在Cert Store中的pfx证书 我有以下功能,这是试图导出pfx文件使用密码和存储到客户端存储 public bool StoreCertificate(StoreName storeName, StoreLocation storeLocation,X509Certificate2 cert,String password, X509KeyStorageFlags keyStoreFlags = X509KeyStorageFlags.Persis
public bool StoreCertificate(StoreName storeName, StoreLocation storeLocation,X509Certificate2 cert,String password,
X509KeyStorageFlags keyStoreFlags = X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet)
{
var store = new X509Store(storeName, storeLocation);
try
{
store.Open(OpenFlags.ReadWrite);
byte[] pfx = cert.Export(X509ContentType.Pfx, password);
cert = new X509Certificate2(pfx, password, keyStoreFlags);
store.Add(cert);
store.Close();
}
catch (Exception error)
{
m_log.LogError("Add to certificate store failed" + error.ToString());
return false;
}
finally
{
if (store != null)
{
store.Close();
}
}
return true;
}
但在检索时,我可以使用以下简单的函数在没有任何密码的情况下检索所有内容
public X509Certificate2 LoadFromStore(StoreName storeName, StoreLocation storeLocation, String password, String subject, X509KeyStorageFlags keyStoreFlags = X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet )
{
var store = new X509Store(storeName, storeLocation);
try
{
store.Open(OpenFlags.ReadWrite);
foreach (var c in store.Certificates)
{
if (c.Subject.Contains(subject))
{
return c;
}
}
}
finally
{
if (store != null)
{
store.Close();
}
}
return null;
}
在存储到CertStore时,是否有任何简单的方法可以保护包含私钥的证书内容
或者
我们是否需要与用户帐户关联