我在使用ASPNET用户导入和访问私钥时遇到了一些问题。 我知道当手动导入私钥(.pfx文件)时,在Windows中,您可以选择将密钥标记为可导出。 现在,据我所知,这是为了稍后检索该私钥所必需的。
我的问题在于我在代码中导入私钥,作为ASPNET用户,并且似乎没有办法将其标记为可导出,就像Windows证书导入向导那样。 为了澄清,导入工作正常,但是当我访问现在导入的证书的详细信息时,没有私钥数据。
这是我用来导入证书的代码,一旦我用正确的密码打开了.pfx文件。
public void ImportCertificate(X509Certificate2 cert, StoreName name, StoreLocation loc)
{
X509Store certStore = new X509Store(name, loc);
StorePermission permission = new StorePermission(PermissionState.Unrestricted);
permission.Flags = StorePermissionFlags.AddToStore;
permission.Assert();
certStore.Open(OpenFlags.ReadWrite);
certStore.Add(cert);
certStore.Close();
}
我是否破坏了权限或导入此私钥的方式? 或者我完全以错误的方式解决这个问题?
答案 0 :(得分:1)
我相信您需要在导入证书时设置X509KeyStorageFlags.Exportable标志。您没有显示该代码,但使用此签名的Import方法存在重载:
public override void Import(string fileName, string password,
X509KeyStorageFlags keyStorageFlags);
或者这个:
public override void Import(byte[] rawData, string password,
X509KeyStorageFlags keyStorageFlags);
您可以在导入之前进行设置。否则,一切看起来都不错!
理查德