VSTS部署至本地IIS服务器遇SSL/TLS安全通道创建失败问题
解决VSTS部署组脚本中SSL/TLS安全通道创建失败的问题
这个错误我之前帮不少团队排查过,核心原因几乎都是PowerShell默认使用的TLS版本过低,而现在VSTS(也就是现在的Azure DevOps)已经不再支持TLS 1.0/1.1这类旧协议了。下面是一步步的解决方法:
1. 强制PowerShell使用TLS 1.2
在运行部署组脚本之前,先在PowerShell里执行这条命令,或者直接把它加到脚本的最开头:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
这条命令会强制当前PowerShell会话使用TLS 1.2建立SSL连接,直接解决协议不兼容的问题。
2. 配置系统级的强加密协议(推荐持久化解决)
如果不想每次运行脚本都手动设置TLS,可以修改Windows注册表让整个系统的.NET应用默认使用强加密:
- 打开管理员PowerShell,运行以下命令添加注册表项:
# 64位系统设置 Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value 1 -Type DWord # 32位兼容设置 Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value 1 -Type DWord - 重启PowerShell或者服务器,让设置生效。
3. 代理环境下的额外配置(如果你的服务器在代理后)
如果部署服务器需要通过代理访问VSTS,还要确保PowerShell能正确走代理:
- 在脚本里添加代理配置(替换成你的代理地址和端口):
$proxyServer = "http://your-proxy-address:port" $proxy = New-Object System.Net.WebProxy($proxyServer, $true) [Net.WebRequest]::DefaultWebProxy = $proxy - 同时确认代理服务器允许访问VSTS的域名(比如
dev.azure.com或者旧的*.visualstudio.com)
4. 其他排查点
- 检查PowerShell版本:如果是PowerShell 2.0,它不支持
Tls12枚举,需要升级到PowerShell 5.1(Windows系统默认自带,或者手动更新)。 - 验证系统时间:服务器的系统时间和时区必须正确,证书验证对时间敏感,时间偏差过大也会导致SSL连接失败。
做完这些步骤后,再以管理员身份重新运行部署组脚本,应该就能成功创建部署组了。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

