我们有一个使用 Always Encrypted 的 SQL Server 2016 数据库。我们最近发布的 ASP.net 网站尝试从该数据库中提取数据,但当我们收到此错误时:
Error: Failed to decrypt column 'EnSSd'. Failed to decrypt a column encryption key using key store provider: 'MSSQL_CERTIFICATE_STORE'. The last 10 bytes of the encrypted column encryption key are: 'B8-48-B3-62-90-0B-1D-A6-7D-80'. Certificate with thumbprint '97B0D3A64CADBE86FE23559AEE2783317655FD0F' not found in certificate store 'My' in certificate location 'CurrentUser'. Verify the certificate path in the column master key definition in the database is correct, and the certificate has been imported correctly into the certificate location/store. Parameter name: masterKeyPath
现在我们知道这意味着证书没有放在服务器上的正确位置。在开发过程中,我们只是将证书放在个人证书存储下的证书管理单元中,这很有效,但是现在网站已经发布,我们尝试在 Web 服务器上做同样的事情,但它不起作用(我们有点想通了)不会)。
站点上启用了匿名身份验证,匿名用户身份为 IUSR。ASP.NET 模拟已禁用。
放置证书的正确位置在哪里?
更新 - 我们通过将应用程序池身份帐户更改为创建证书的帐户来使其工作。它也是将证书添加到 Web 服务器上的 Current User-Personal 列表时使用的帐户。我们宁愿不使用这个帐户,那么再次,放置证书的正确位置在哪里?