简单问题:在 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 导入和同步它们。