5

运行以下代码时的问题:

X509Certificate2 cert = new X509Certificate2(@"C:\file.p12", "password", X509KeyStorageFlags.Exportable);
RSACryptoServiceProvider crypt = (RSACryptoServiceProvider)cert.PrivateKey;

我收到以下错误:Keyset does not exist

我还没有将证书添加到商店,这是否需要能够访问私钥?

4

1 回答 1

10

X509KeyStorageFlags.PersistKeySet选项添加到 X509Certificate2 构造函数的最后一个参数。否则,当它加载 p12 文件时,它不会加载私钥。具体来说:

X509Certificate2 cert = new X509Certificate2(@"C:\file.p12", "password",    
    X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
RSACryptoServiceProvider crypt = (RSACryptoServiceProvider)cert.PrivateKey;

如果失败,则可能是密钥存储位置的文件权限问题。有关说明和示例,请参阅X509Certificate - Keyset 不存在。

于 2012-09-11T08:40:54.887 回答