始终加密:无法使用密钥库提供程序解密列加密密钥:'MSSQL_CERTIFICATE_STORE'

use*_*965 6 c# encryption wcf always-encrypted

我在我的Web应用程序中执行始终加密,它由窗口服务托管的WCF服务插入数据.我在将数据插入加密列时遇到以下错误.无法使用密钥库提供程序解密列加密密钥:'MSSQL_CERTIFICATE_STORE'.加密列加密密钥的最后10个字节是:'64-56-87-3B-EC-2E-11-9D-2A-B5'.证书位置'CurrentUser'中的证书存储'My'中找不到指纹'A0D10777759BBD947EEA6F3F5D1A7989514C45F0'的证书.验证数据库中列主密钥定义中的证书路径是否正确,并且证书已正确导入证书位置/存储.参数名称:masterKeyPath

dil*_*tre 5

这个问题的解决方法是

  1. 运行 (MMC)
  2. 在 snap 控制台中选择证书。
  3. 找到您始终加密的证书,我的用户或机器帐户
  4. 右键单击-> 所有任务-> 管理私钥。
  5. 添加进行 SQL 连接的 Windows 用户。
  6. 用户可以是进程用户,也可以是 IIS 或任何 Windows 登录用户。

它解决了我的问题。


Alp*_*pay 4

好吧,我发现了问题。情况正是如此:我使用以我自己的帐户启动的 SQL Server Management Studio 为列设置始终加密。因为我使用自己的 Windows 帐户运行 SSMS 进程,所以它将证书放置在我帐户的 Current User / MY 目录中。但是 IIS 应用程序池正在使用不同的帐户运行,因此它无法在我的帐户的 CurrentUser/My 目录下找到证书。

我使用启动 SSMS 并创建证书的相同帐户重新启动了 IIS 应用程序池,问题就消失了。

谢谢