MS Webdeploy V3 encryptPassword 正确用法

MS Webdeploy V3 encryptPassword 正确用法

我已经在我的(“旧”)Server 2003/IIS6 和(“新”)Server 2012/IIS8 上安装了 MS Webdeploy(版本 3.5)。目前,我遵循此处文章中的指南,在从“旧”服务器转移到“新”服务器之前备份目标服务器,并且我已成功以这种方式备份:

%windir%\system32\inetsrv\appcmd add backup “IIS_Backup_2012”

我也准备以这种方式备份(如下)。

cd c:\Program Files\IIS\Microsoft Web Deploy V3
msdeploy -verb:sync -source:webServer -dest:package=E:\web_data\IIS_Backup_2012.zip

我已经用这种方法成功地备份了它,尽管在一篇文章中,(使用 MSDeploy 备份所有网站),建议“如果您有 SSL 证书,则需要 encryptPassword [命令]。”
由于我是证书新手,该参数中应该包含哪个密码?

此外,当我准备传输时,是否还有其他命令需要添加到我的备份或传输中?(是否有一个全面的命令列表可以指示使用场景?)我从 MS Tech Net 上找到了一些列表(https://technet.microsoft.com/en-us/library/dd569001%28v=ws.10%29.aspx) 和 (https://technet.microsoft.com/en-us/library/dd569089%28v=ws.10%29.aspx),但我并不完全确定它能否满足我的特定需求,因为我只需要传输 Web 文件和配置,而不是数据库。

非常感谢您的任何建议。

答案1

好吧,我刚刚知道了为什么需要密码。(对于那些不知道的人如何,我在底部展示了一个示例命令行。)

根据其中一个例子这一页,该encryptPassword参数是 的一个选项archiveDir,它获取 IIS 配置中的任何加密数据(例如密码)并将其加密(使用指定的密码)存储在存档中。以下是所有三个相关示例的摘录,因为它们可能很快就会消失:

  1. 存档元数据库并指定加密密码。

    msdeploy -verb:sync -source:metaKey -dest:archivedir=c:\mydir,encryptPassword=MyPassKey
    
  2. 显示档案。密码将以加密形式显示。

    msdeploy -verb:dump -source:archivedir=c:\mydir
    
  3. 使用您之前指定的密码显示档案。密码将以纯文本显示。

    msdeploy -verb:dump -source:archivedir=c:\mydir,encryptPassword=MyPassKey
    

如果我理解正确的话,对于实时站点,此信息是使用 IIS 所运行的机器的机器密钥加密的。msdeploy 必须解密该信息,因为新机器上的机器密钥会有所不同。因此,您必须选择自己的密码,以便创建一个独立于原始机器或您运行 msdeploy 的机器的档案。

例子

就我而言,我知道我需要指定此选项,因为 msdeploy 拒绝完成存档构建,并退出并出现如下错误(强调添加):

错误:属性“密码”位于'/webServer/appHostConfig[@path='']/location[@path='']/section[@name='system.applicationHost/applicationPools']/applicationPools/add[@name='NameOfAppPool']/process Model'被标记为安全。您必须指定加密密码才能存档此属性。

因为我使用的是 IIS 7,所以给出的“位置”是一个 XPath 表达式,指的是安全数据所在的 XML 元素。我猜对了,有问题的 XML 文件是C:\Windows\System32\inetsrv\config\applicationHost.config,下面是有问题的行:

<add name="NameOfAppPool" autoStart="true" managedPipelineMode="Integrated">
    <processModel identityType="SpecificUser" userName="IUSR_CUSTOM" password="[enc:IISWASOnlyAesProvider:G0BBLEDYG00K=:enc]" />
</add>

果然,该行包含一个密码属性,我不想以纯文本形式存储它。

如何

以下是为 msdeploy 指定加密密码的方法:

msdeploy -verb:sync -source:metaKey -dest:archivedir=c:\mydir,encryptPassword=MyPassKey

-source:archivedir=c:\mydir,encryptPassword=MyPassKey当您需要解密加密数据时也可以使用。

警告

不过要小心。我注意到它encryptPassword不会接受像这样的任意密码:“exfoliate vitalize despair reclining unicycle marbling aim petted”。它还会给出不合逻辑的错误消息:

错误:提供程序“archivedir”不支持“encryptPassword=exfoliate vitalize despair reclining unicycle marbling aim petted”设置。支持的设置有 (authType、computerName、encryptPassword、includeAcls、password、prefetchPayload、userName、wmsvc)。

我认为它不喜欢空格。当我改用连字符时,它就起作用了。(不,我没有使用这个密码 ;-)

相关内容