0

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

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

aspnet_regiis -pa "MyKeyContainer" IUSR

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

我们正在使用 IIS 7。我们是否应该在不同的用户而不是 IUSR 下运行 IIS 才能让它工作?我做错了什么吗?

4

1 回答 1

1

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

为了找出这个用户,我将以下方法的输出放入我的应用程序的一个页面中,然后用网络浏览器点击它,这样它就会告诉我实际在哪些用户下运行:

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

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

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

该命令授予用户读取加密配置文件的权限,这就是我的应用程序在其下运行的用户。

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

希望这可以帮助其他人。

于 2014-07-16T19:20:20.233 回答