asp.net - 将始终加密的证书放置在 IIS 7.5 Web 服务器上的什么位置?

标签 asp.net iis iis-7.5 sql-server-2016 always-encrypted

我们有一个采用始终加密的 SQL Server 2016 数据库。我们最近发布的 ASP.net 网站尝试从此数据库中提取数据,当这样做时,我们收到此错误:

错误:无法解密列“EnSSd”。无法使用 key 存储提供程序解密列加密 key :“MSSQL_CERTIFICATE_STORE”。加密列加密 key 的最后 10 个字节为:“B8-48-B3-62-90-0B-1D-A6-7D-80”。在证书位置“CurrentUser”的证书存储“我的”中找不到指纹为“97B0D3A64CADBE86FE23559AEE2783317655FD0F”的证书。验证数据库中列主 key 定义中的证书路径是否正确,并且证书已正确导入到证书位置/存储中。参数名称:masterKeyPath

现在我们知道这意味着证书尚未放置在服务器上的正确位置。在开发过程中,我们只是将证书放置在个人证书存储下的证书管理单元中,并且该方法有效,但是现在该网站已发布,我们尝试在 Web 服务器上执行相同的操作,但它不起作用(我们有点认为它是有效的)不会)。

站点启用匿名身份验证,匿名用户身份为 IUSR。 ASP.NET 模拟已禁用。

证书放置在哪里合适?

<小时/>

更新 - 我们通过将应用程序池身份帐户更改为创建证书的帐户来使其正常工作。这也是将证书添加到 Web 服务器上的当前用户个人列表时使用的帐户。我们不想使用这个帐户,所以再说一次,放置证书的正确位置在哪里?

最佳答案

始终加密要求访问数据库的用户同时拥有公钥和私钥,这似乎要求您使用该帐户来生成证书,因为他们将拥有此 key 。

我通常做的是生成证书并使用私钥和安全密码导出证书。然后将带有 key 的证书导入到您用于运行应用程序池的帐户的个人存储中。这不能是通用集成帐户,而必须是您指定的服务帐户。

以用户身份运行 powershell 脚本:

whoami
COMPUTER\myIISPoolUser
Set-Location -Path cert:\localMachine\my
Import-PfxCertificate –FilePath c:\AlwaysEncrypt.pfx

或者使用mmc。

whoami
COMPUTER\myIISPoolUser
certmgr.msc

您还必须允许应用程序池用户 load user profile

关于asp.net - 将始终加密的证书放置在 IIS 7.5 Web 服务器上的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38462367/

相关文章:

jQuery 下拉列表

.net - IIS API-创建虚拟目录?

asp.net-mvc-3 - 在 IIS7.5 网站中托管多个 ASP.Net MVC3 应用程序时出现问题

c# - IQueryable 投影到 DTO - 自动映射器在这种情况下可以提供帮助吗?

asp.net - 404.17 错误 - 请求的内容似乎是脚本

asp.net - 在 IIS 7.5 中监控平均响应时间的优雅方法是什么?

asp.net - machine.config 和 web.config 中的 machineKey 属性。它们是合并的还是被覆盖的?

asp.net-mvc-3 - 部署 ASP.NET MVC 应用程序时出现 IIS 7.5 403 访问被拒绝错误

asp.net - 具有 Windows 身份验证的 IIS 7.5 Web 应用程序是否需要最终用户具有文件权限?

asp.net - 在 ASP.NET 动态数据中隐藏一列