密钥在指定状态下无效

| 我们正在使用CNG加密某些敏感数据。作为标准,我们实现了SQL Integrated Security,而不是使用具有DB权限的SQL用户。为了实现这一点,我们将应用程序池标识定义为相同的Active Directory标识,并为其赋予了适当的数据库许可。 现在,问题是当我的AppPool在本地系统下运行时,我可以从CNG密钥库创建和检索密钥,但是,当我将该标识更改为活动目录用户时,我开始获得“密钥在指定状态下无效”当我尝试从CNG商店检索密钥时。以下是我们的一些观察结果: 要在用户级别实现CNG,我们需要能够创建用户级别的CNG密钥,而不是计算机密钥。我们已经完成了此操作,并且成功创建了用户级别密钥,我们可以在UserProfile中看到它-C:\\ Users \\ ADusername \\ AppData \\ Roaming \\ Microsoft \\ Crypto \\ Keys 我们在“池设置”中设置了\“ LoadUserProfile = True \”。 我们也为AD用户授予了%windows%\\ Microsoft.Net \\ Framework \\ Asp.Net Temp文件的读取/修改权限 我们仍然继续收到此错误。任何帮助将不胜感激。     
已邀请:
        我知道这是一个比较老的问题,但我认为我会提出建议。我试图在本地IIS上运行现有应用程序,并且应用程序池在AD凭据下运行,并且在RSACryptoServiceProvider对象上调用.ToXmlString(true)时遇到了相同的异常。 他们解决此问题的方式只是在本地计算机上重新导入密钥,然后选中“将此密钥标记为可导出”复选框。     

要回复问题请先登录注册