我正在尝试将Always Encrypted应用程序部署到Amazon AWS。有一个2016 RDS数据库和一个托管ASP.NET 4.6应用程序的Windows Server 2016。
在Windows Server上,当应用程序在网络服务或应用程序池标识下运行时,我们得到了我非常确定的this exact problem。
我们的错误:
System.Data.SqlClient.SqlException (0x80131904): Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out
到目前为止,除了作为管理员运行应用程序之外,没有任何工作,我们不知道接下来要尝试什么。对于某种类型的“Microsoft官方部署指南”而言,我们看起来很高和很低。但是所有这些都是关于如何让Always Encrypted在本地开发环境中工作的教程,没有关于服务器部署的信息。
答案 0 :(得分:3)
当您最初为SQL数据库创建始终加密密钥时,是否在当前用户证书存储区或本地计算机证书存储区中生成它们?事实证明,将它们置于本地计算机之下非常重要。当我尝试将我的Web应用程序部署到我们的Web服务器时,这就是我的问题。无论我在服务器上安装证书的哪个位置,SQL仍然在当前用户下查找,IIS无法看到,并且此商店没有显示“管理私钥”,因此您无法为其分配IIS用户帐户(至少我不能。
我暂时将表格字段重置为纯文本,删除主密钥和加密密钥,然后在我的PC上的本地计算机下重新生成它们,并导出证书,将其安装到本地机器/个人商店就好了,我所要做的就是使用"管理私钥"给予IIS_IUSRS权限。清除剩余的" Keyset不存在"错误。希望这可以节省其他人一天的谷歌搜索。