我们正在使用CNG来加密我们的一些敏感数据。作为标准,我们实现SQL集成安全性,而不是使用具有数据库权限的SQL用户。为实现此目的,我们将应用程序池标识定义为具有相应数据库权限的相同Active Directory标识。
现在,问题是当我的AppPool在Local System下运行时,我可以创建&从CNG密钥存储区检索密钥但是,当我将该标识更改为活动目录用户时,当我尝试从CNG商店检索密钥时,我开始收到“密钥无法在指定状态下使用”。以下是我们的一些观察结果:
要在用户级别实施CNG,我们需要能够创建用户级CNG密钥而不是机器密钥。我们已经完成了,用户级别密钥已成功创建,我们可以在UserProfile中看到它 - C:\ Users \ ADusername \ AppData \ Roaming \ Microsoft \ Crypto \ Keys
我们仍然继续收到此错误。任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
我知道这是一个较老的问题,但我想我会发布一个建议。我试图在本地IIS上运行现有应用程序,其中应用程序池在AD信号下运行,并且在RSACryptoServiceProvider对象上调用.ToXmlString(true)时遇到了同样的异常。
我解决这个问题的方法只是重新导入我本地计算机上的密钥并检查"将此密钥标记为可导出"复选框。