在 Windows Server 2008 R2 Core 上设置 IIS 7.5 共享配置(带有加密值)

在 Windows Server 2008 R2 Core 上设置 IIS 7.5 共享配置(带有加密值)

简单问题:在 PowerShell 或 appcmd 中是否有办法创建通常通过在 IIS 7.5 中导出共享配置创建的 ConfigEncryptedKey.key?

现在,解释一下为什么我要这样做......

我们正在尝试在 Windows Server 2008 R2 Core 上使用 IIS 7.5 的共享配置功能。

问题是,每一份有关该技术的指南都提到通过 IIS 管理器进行管理。在 Core 上,您只能远程执行此操作(而不是在服务器本身上执行此操作)。

远程管理时,此功能(共享配置)似乎不可用。

尽管如此,我们手动设置它还是取得了一些成功(即自己设置 c:\windows\System32\inetsrv\config\redirection.config)。唯一的问题出现在我们尝试在特定帐户(用户名和密码)下运行应用程序池时。密码的存在会提示 IIS 在共享 applicationHost.config 中加密此值。

在您设置应用程序池的服务器上,这没有问题。但是,当共享对中的另一台服务器尝试启动应用程序池时,它无法解密 applicationHost 中的密码。

事件日志中的错误消息为(系统/WAS/事件 ID 5021):

应用程序池 mysitename 的标识无效。为该标识指定的用户名或密码可能不正确,或者用户可能没有批量登录权限。如果标识未更正,则当应用程序池收到其第一个请求时,该应用程序池将被禁用。如果批量登录权限导致问题,则必须在授予权限后更改 IIS 配置存储中的标识,然后 Windows Process Activation Service (WAS) 才能重试登录。如果在处理应用程序池的第一个请求后标识仍然无效,则该应用程序池将被禁用。数据字段包含错误号。

另请注意,尝试通过 IIS 管理器 UI 在第二台服务器上设置身份会导致此错误对话框:

执行此操作时出现错误。

细节:

错误数据。(来自 HRESULT 的异常:0x80090005)

通常(当通过 IIS 管理器 UI 完成时,我们不能在 Core 上使用),会创建一个名为 ConfigEncryptedKey.key 的文件。这似乎将解密 applicationHost.config 中的应用程序池用户密码所需的密钥传达给第二台服务器。

由于我们不能使用 UI 来执行此操作,是否有办法通过编程来执行此操作?

答案1

您应该能够使用以下共享配置指南中的附录 3 技术: http://learn.iis.net/page.aspx/264/shared-configuration/

简而言之:ASPNET_REGIIS -px 导出 IISConfigurationKey 和 IISWasKey,并在目标框上使用 -pi 导入和同步它们。

相关内容