如何授予IUSR读取使用aspnet_regiis在另一台机器上加密的web.config的权限?

时间:2014-07-16 17:49:35

标签: asp.net iis encryption iis-7 aspnet-regiis.exe

我们正在使用aspnet_regiis来加密我们的web.config(和其他app.config文件)。如果我在我们的网络服务器上加密它,它就可以工作,但我需要能够在另一台服务器上加密文件并进行部署。

我知道如何执行此操作,并且它可以与不在IIS下的其他服务器上的其他配置文件一起使用。我还通过加密Web服务器上的文件来测试它,以确保问题不是加密过程。问题似乎是IUSR用户没有访问密钥容器的权限。当我尝试命令时:

aspnet_regiis -pa "MyKeyContainer" IUSR

它失败并显示警告“指定的用户名无效。”

我们正在使用IIS 7.我们应该在不同的用户而不是IUSR下运行IIS来使其工作吗?我做错了吗?

1 个答案:

答案 0 :(得分:0)

经过一些实验,我发现我必须向名为“IIS APPPOOL \ ABC”的用户授予权限(其中ABC是我的应用程序的3个字母的名称),因此它可以读取IIS的密钥容器以读取我的加密文件。我不知道那个名字来自哪里,但由于“ABC”是我的应用程序池的名称,所以可能就是这样。

为了弄清楚这个用户,我将以下方法的输出放入我的应用程序的页面中,然后使用Web浏览器点击它,这样它就会告诉我实际运行的用户是什么:

System.Security.Principal.WindowsIdentity.GetCurrent().Name

当我刷新浏览器时,它会输出“IIS APPPOOL \ ABC”用户。然后,我从命令行运行以下命令:

aspnet_regiis -pa "ABCConfigKeys" "IIS APPPOOL\ABC"

该命令允许用户读取加密的配置文件,这是我的应用程序运行的用户。

我的IIS7应用程序池的标识设置为“ApplicationPoolIdentity”。当我打印出来时,我完全希望看到IUSR用户,但我得到了这个“IIS APPPOOL \ ABC”的东西。

希望这有助于其他人。