" SSL证书包含与主机名不匹配的公用名(CN)。"在VSTS部署中

时间:2017-03-01 17:45:38

标签: ssl tfs winrm azure-pipelines-release-pipeline

我正在使用VSTS部署到Azure VM。在我的发行版定义中,尝试复制文件时收到以下错误:

  

SSL证书包含不匹配的公用名(CN)   主机名。有关更多信息,请参阅   about_Remote_Troubleshooting帮助主题。修复WinRM连接   相关问题,请选择“启用复制先决条件”'选项   任务。如果已设置,则目标虚拟机由a支持   负载均衡器,确保为目标端口配置入站NAT规则   (5986)。仅适用于ARM VM。欲了解更多信息,请参阅   https://aka.ms/azurefilecopyreadme};]

我没有使用负载均衡器。我注意到,只要我在Azure门户中为我的VM添加DNS名称标签(在公共IP设置中),就会出现问题。

1 个答案:

答案 0 :(得分:24)

问题不在于主机文件或构建代理,而在于 TARGET 计算机上的服务器证书。对我来说,当我遇到问题时,我正在使用VSTS部署到 Azure VM ,但现场计算机的解决方案也是如此。

对于Azure VM部署,当您为公共IP创建没有 DNS名称标签的VM时,会出现问题,然后再添加一个(类似example.centralus.cloudapp.azure.com)。如果更改DNS名称标签,也会发生此问题。

问题

您需要检查自己如何连接到本机。以前,它使用Azure VM IP地址工作得很好。现在,VSTS开始尝试使用example.centralus.cloudapp.azure.com:5986,因为我最近添加了DNS名称标签。我们将其称为目标计算机地址

目标计算机上,以管理员身份打开PowerShell或命令提示符,然后输入命令“winrm e winrm/config/listener”。它应该返回两个侦听器,一个用于 HTTP ,另一个用于 HTTPS (如果没有为HTTPS列出,请不要担心我们稍后会添加一个)。请特别注意HTTPS侦听器的主机名。如果这与我们之前找到的目标计算机地址不匹配,那就是导致错误的原因。 CertificateThumbprint 对应于计算机上的服务器证书。

要查看这些证书,请在PowerShell或命令提示符下键入mmc,然后按Enter键。转到'文件'> '添加/删除管理单元...'。选择“证书”,然后点击添加。在对话框中,选择“计算机帐户”,然后单击下一步,然后单击完成。在“证书”下> '个人'> “证书”,您将看到WinRM配置使用的证书。此处的自签名证书被视为测试证书,因为它们不受官方证书颁发机构的支持。我们需要创建一个代表您要使用的目标计算机地址

您还可以在“服务器证书”下的IIS中查看证书。

解决方案

确保您知道要使用哪个地址连接到本机。这是目标计算机地址

目标计算机上,以管理员身份打开PowerShell。输入以下命令。

New-SelfSignedCertificate -DnsName WhateverTargetMachineAddressYouNeed -CertStoreLocation Cert:\LocalMachine\My

这将为您的目标地址创建一个新的服务器证书,有效期为一年。

接下来,我们要为HTTPS传输类型重新创建WinRM侦听器以使用新证书。打开IIS并查看Web服务器的服务器证书。你应该看到你刚刚创建的那个。右键单击它并选择“查看...”。在详细信息标签中,复制证书的指纹。如果您愿意,也可以从mmc执行此操作。

在PowerShell中一次输入以下命令。

winrm delete winrm/config/listener?Address=*+Transport=HTTPS

然后:

winrm create winrm/config/listener?Address=*+Transport=HTTPS '@{Hostname="WhateverTargetMachineAddressYouNeed";CertificateThumbprint="TheThumbprintYouCopied";port="5986"}'

完成!如果您在PowerShell中输入winrm e winrm/config/listener,您现在应该会看到使用新证书的HTTPS传输。

如果您的发布定义或部署脚本中的任何内容使用旧地址(对我来说,Azure VM IP地址),请务必更新它们以使用新的目标计算机地址(对我来说) ,Azure VM DNS名称标签)WITH端口号。在VSTS中,请确保选中使用“测试证书”的复选框。祝你好运!

有关详细信息,请访问:

http://www.dotnetcurry.com/windows-azure/1289/configure-winrm-execute-powershell-remote-azure-with-arm