【问题标题】:How can I access a private key with the ASPNET user account?如何使用 ASPNET 用户帐户访问私钥?
【发布时间】:2010-09-15 02:23:13
【问题描述】:

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

我是否搞砸了权限或导入此私钥的方式? 还是我完全走错了路?

【问题讨论】:

    标签: c# encryption certificate


    【解决方案1】:

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

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

    或者这个:

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

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

    理查德

    【讨论】:

      猜你喜欢
      • 2017-12-12
      • 2020-05-13
      • 2021-05-09
      • 2020-08-28
      • 2015-07-09
      • 1970-01-01
      • 2018-03-07
      • 2021-03-07
      • 2017-06-09
      相关资源
      最近更新 更多