访问c#中的x509certificate2时不存在keyset

时间:2013-01-28 08:05:04

标签: c# cryptography

当我尝试在安装它的pfx之后第一次使用x509Certificate2对象时,它可以对数据进行签名,但是从第二次它不能并且显示错误,该行上不存在键集...

RSACryptoServiceProvider csp = (RSACryptoServiceProvider)cert.PrivateKey;

在调试中它也显示

A first chance exception of type 
'System.Security.Cryptography.CryptographicException' occurred in mscorlib.dll

无法弄清楚这里的问题......

2 个答案:

答案 0 :(得分:2)

我有解决方案......

首次成功运行后,私钥变得无法访问,因此创建了问题。

解决方案是添加一行代码:

csp.PersistKeyInCsp = true;

确保密钥可以访问。

答案 1 :(得分:0)

如果尝试访问私钥的Windows用户没有权限,则可能会出现此错误。要修复打开的MMC并添加“证书”管理单元,请找到证书,右键单击“所有任务” - >管理私钥并授予该特定用户读取私钥的权限。