如何使用ASPNET用户帐户访问私钥?
时间:2020-03-06 15:04:45 来源:igfitidea点击:
我在使用ASPNET用户导入和访问私钥时遇到了一些麻烦。
我知道,当在Windows中手动导入私钥(.pfx文件)时,我们可以选择将密钥标记为可导出。
现在,据我所知,以后需要检索该私钥时需要这样做。
我的问题在于,我以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(); }
我是在修改权限还是导入此私钥的方式?
还是我完全以错误的方式去做这件事?
解决方案
我相信我们在导入证书时需要设置X509KeyStorageFlags.Exportable标志。我们没有显示该代码,但是具有此签名的Import方法有很多重载:
public override void Import(string fileName, string password, X509KeyStorageFlags keyStorageFlags);
或者这一个:
public override void Import(byte[] rawData, string password, X509KeyStorageFlags keyStorageFlags);
我们可以在导入前进行设置。否则,一切看起来都不错!
理查德