1

我在使用 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();
}

我是在搞砸权限还是我导入此私钥的方式?还是我完全以错误的方式解决这个问题?

4

1 回答 1

1

我相信您在导入证书时需要设置 X509KeyStorageFlags.Exportable 标志。您没有显示该代码,但是具有此签名的 Import 方法有一个重载:

public override void Import(string fileName, string password, 
                            X509KeyStorageFlags keyStorageFlags);

或者这个:

public override void Import(byte[] rawData, string password, 
                            X509KeyStorageFlags keyStorageFlags);

这将让您在导入之前设置它。否则,一切看起来都很好!

理查德

于 2008-10-03T15:17:01.253 回答