我在我的Web应用程序中执行始终加密,它由窗口服务托管的WCF服务插入数据。我在将数据插入加密列时遇到以下错误。 无法使用密钥库提供程序解密列加密密钥:' MSSQL_CERTIFICATE_STORE'。加密列加密密钥的最后10个字节是:' 64-56-87-3B-EC-2E-11-9D-2A-B5'。 带有指纹的证书' A0D10777759BBD947EEA6F3F5D1A7989514C45F0'没有在证书商店找到我的'在证书位置' CurrentUser'。验证数据库中列主密钥定义中的证书路径是否正确,并且证书已正确导入证书位置/存储。 参数名称:masterKeyPath
答案 0 :(得分:4)
好的,我发现了问题。案例就是这样的:我总是使用SQL Server Management Studio为一个列加密,该列以我自己的帐户开头。因为我使用自己的Windows帐户运行SSMS进程,所以它将证书放在我帐户的当前用户/我的目录中。但是,IIS应用程序池使用不同的帐户运行,因此它无法运行。在我的帐户下找到证书' s CurrentUser /我的目录。
我使用启动SSMS并创建证书的同一帐户重新启动了IIS应用程序池,问题就一去不复返了。
由于
答案 1 :(得分:2)
此问题的解决方案是
它解决了我的问题。
答案 2 :(得分:1)
当您开始在Visual Studio中使用数据库或在其他计算机上使用Web服务器时会发生这种情况,然后存储始终加密的数据库。
您的部分信息将是:证书商店“我的”在证书位置'CurrentUser'中找不到指纹'............ BAE90'的证书。
转到数据库所在的计算机。 打开证书管理器。
右键单击“证书 - 当前用户”并对最后几位数字进行查找(在示例BAE90中)。 用户查看字段:SHA1哈希。
找到Cert后,右键单击它并导出到文件。
在新的Visual Studio计算机上打开证书管理器并导入证书,您应该很高兴。
与其他答案一样,您还需要将应用程序池中的用户“同步”到已添加证书的用户。
答案 3 :(得分:0)
我遇到了同样的问题并尝试了很多解决方案,但实际解决方案非常简单,解决了我的问题。
要在 ii 的服务器上安装证书,而不管您的数据库服务器是在另一台服务器还是同一台服务器上:
1 - 转到 ii 服务器的证书管理器:在“运行”中输入 certmgr.msc 并按 Enter
2 - 您将找到个人文件夹 --> 证书文件夹:右键单击它并导入您的证书。
3 - 从文件中选择您的证书,然后选择自动检测路径选项单选按钮并完成安装,而不是在个人上安装。
4 - 请记住,此安装的证书不会出现在您的个人 --> 证书文件夹下,但您的应用程序会在此之后运行,因为证书将自动安装在正确的路径上。
经过 3 天的研发,这个解决方案对我有用。