在 C# 中访问 x509证书2 时不存在密钥集

本文关键字:不存在 密钥 证书 访问 x509 | 更新日期: 2023-09-27 17:56:29

当我在安装x509Certificate2对象后第一次尝试使用它时,它可以对数据进行签名,但从第二次开始它不能并显示一个错误,即键集不存在在线...

RSACryptoServiceProvider csp = (RSACryptoServiceProvider)cert.PrivateKey;

在调试中还显示

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

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

在 C# 中访问 x509证书2 时不存在密钥集

我已经找到了解决方案...

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

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

csp.PersistKeyInCsp = true;

它确保密钥可访问。

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