无法在TFS 2015中将多个HTTPS站点部署到单个主机

时间:2017-11-30 21:26:35

标签: iis azure-devops tfs2015 ms-release-management

我正在尝试将多个网站部署到从TFS 2015运行IIS的单个主机。我正在尝试让所有网站都使用“需要服务器名称指示”选项,以便它们都可以在相同的IP地址下运行。 (如果我手动设置所有内容,此设置在IIS中可以正常工作 - 我的问题/问题来自于从TFS 2015部署)。

部署链中的FIRST站点工作正常,但任何后续站点似乎都失败并出现以下错误:

System.Exception:  SSL Certificate add failed, Error: 183 Cannot create a file when that file already exists.

我正在部署的每个网站都有不同的SSL证书,我已将它们全部导入到本地计算机\个人存储中。

突出显示“IIS Web App管理”任务的发布定义的屏幕截图如下所示。

enter image description here

有关如何在发布定义中解决此错误的任何建议,以便我可以干净地部署而无需人工干预?

我想我可以尝试的一件事是从PowerShell执行所有IIS管理步骤,但希望更充分地使用这些工具,而不是滚动新脚本来执行看起来他们应该能够本地执行的操作

感谢任何见解。

2 个答案:

答案 0 :(得分:0)

如果您尝试将证书绑定到已绑定到此证书或其他证书的端口,则会显示错误消息。

您可以尝试为网站设置不同的端口。

如果不影响网站,您还可以尝试添加步骤(命令行/ Powershell步骤)以在下次部署步骤之前删除现有绑定。

例如:

$> netsh http delete sslcert ipport:1.1.1.1:443 

参考以下文章删除绑定:

答案 1 :(得分:0)

我让事情有效 - 但我必须基本上消除WinRM中的绑定配置 - IIS应用管理任务。我保持一切相同但在这些任务中根本没有指定绑定信息,然后添加了一个看起来像这样的目标机器电源shell脚本(指纹和站点域已更改):

Import-Module WebAdministration

if ($null -eq (Get-WebBinding | Where-Object {$_.BindingInformation -eq "*:443:iddev.mydomain.com"}))
{
    New-WebBinding -Name "Identity-B2B" -Port 443 -Protocol "https" -HostHeader "iddev.mydomain.com" -SslFlags 1
    New-Item -Path "IIS:\SslBindings\!443!iddev.mydomain.com" -Thumbprint "88E811B7A9417DACAAAAAAAAAA1C36AA0BA238FF1E0F" -SSLFlags 1
}

if ($null -eq (Get-WebBinding | Where-Object {$_.BindingInformation -eq "*:443:iddev.myotherdomain.com"}))
{    
    New-WebBinding -Name "Identity-B2C" -Port 443 -Protocol "https" -HostHeader "iddev.myotherdomain.com" -SslFlags 1
    New-Item -Path "IIS:\SslBindings\!443!iddev.myotherdomain.com" -Thumbprint "BE38195A2BBBBBBBBBBBBBBB1C2AB5762C9" -SSLFlags 1
}