无法从Jenkins部署Azure云服务,执行Get-AzureDeployment遇SSL/TLS错误
解决Azure PowerShell部署时的SSL/TLS安全通道错误
我来帮你搞定这个SSL/TLS的问题,这个错误很常见,主要是协议版本不兼容或者设置时机不对导致的,咱们一步步来修复:
1. 调整TLS设置的执行顺序(最关键的一步)
你原来的脚本里,是先导入发布设置、设置订阅,再设置TLS协议——这就晚了!Import-AzurePublishSettingsFile命令在执行时就会和Azure服务建立连接,这时候还没切换到TLS 1.2,自然会用旧协议触发错误。
正确的顺序应该是先设置TLS协议,再执行任何Azure相关命令:
# 优先设置TLS 1.2(Azure当前只支持这个版本的安全协议) [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12 # 再导入发布设置文件 Import-AzurePublishSettingsFile -PublishSettingsFile "C:\Temp\CloudFareABTPublishSettings.publishsettings" # 设置目标订阅 Set-AzureSubscription -SubscriptionName "CloudFare ABT Test" # 最后执行部署查询命令 Get-AzureDeployment -ServiceName "你的云服务名称"
2. 简化TLS协议的取值
你原来的脚本里把Tls、Tls1和Tls12都加进去了,但Azure现在已经不再支持Tls和Tls1这些旧版本的协议,只保留TLS 1.2的支持。多添加旧协议反而可能干扰连接,直接只设置Tls12就够了。
3. 检查并升级Azure PowerShell模块
如果你用的是旧版的Azure PowerShell模块(不是Az模块),它对TLS 1.2的支持可能不完善。建议:
- 打开PowerShell,执行
Get-Module -ListAvailable Azure查看版本,如果版本低于3.8.0,赶紧升级到最新版 - 长远来看,建议迁移到Az模块(Azure模块已经被官方弃用,不再更新),Az模块对现代安全协议的支持更好
4. 配置系统级的强加密设置
如果上面的步骤还没解决问题,可能是你的机器(本地和Jenkins服务器)的.NET Framework默认没有启用强加密协议。可以通过注册表修改:
- 打开注册表编辑器,定位到
HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 - 新建一个名为
SchUseStrongCrypto的DWORD值,设置为1 - 同样在
HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319路径下,重复上面的操作 - 修改后重启PowerShell或者Jenkins服务,让设置生效
内容的提问来源于stack exchange,提问作者user7606932
相关产品推荐
相关产品推荐

