MSBuild 还原给出“请求被中止:无法创建 SSL/TLS 安全通道。”
Posted
技术标签:
【中文标题】MSBuild 还原给出“请求被中止:无法创建 SSL/TLS 安全通道。”【英文标题】:MSBuild Restore gives "The request was aborted: Could not create SSL/TLS secure channel." 【发布时间】:2021-04-23 13:09:36 【问题描述】:在我的构建服务器上,我使用 MSBuild Restore 任务在构建之前恢复 Nuget 包,但出现错误:
无法加载源的服务索引 https://api.nuget.org/v3/index.json.
发送请求时出错。
请求被中止:无法创建 SSL/TLS 安全通道。
当我调用 Nuget.exe 时,它可以工作。
MSBuild 版本 = "16.8.2+25e4d540b" 服务器很旧,是 Windows 2008 R2 SP1。
我试图检查 TLS 1.2 是否存在问题,因此我运行了一个小程序来测试协议。我从这里得到了代码: https://gist.github.com/zivkan/5291f507c8c5724d41a18357b7afcd30
线程: https://developercommunity.visualstudio.com/content/problem/1096460/nuget-not-working-again-could-not-create-ssltls-se.html
结果是:
没有成功
Ssl2 失败
Ssl3 失败
Tls 失败
默认失败
Tls11 失败
Tls12 工作
Tls13 失败
根据 cmets 应该没问题。
接下来我应该怎么做才能让 MSBuild 恢复正常工作?
【问题讨论】:
【参考方案1】:试试这个:
建议
1) 因为您只安装了 TLS1.2 而不是 TLS1.3。尝试打开它。以 Administrator 身份在 Developer Powershell for VS2019 下运行这些命令:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v DisabledByDefault /t REG_DWORD /d 0 /f /reg:32
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v DisabledByDefault /t REG_DWORD /d 0 /f /reg:64
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v Enabled /t REG_DWORD /d 1 /f /reg:32
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v Enabled /t REG_DWORD /d 1 /f /reg:64
2)如果第一步不起作用,请尝试以下方法:
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client' -name 'Enabled' -value '0' -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force | Out-Null
Write-Host 'TLS 1.3 has been disabled.'
reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:64
reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:32
【讨论】:
运行后 1. 密钥出现在注册表中(以前不存在),现在恢复似乎可以工作了!以上是关于MSBuild 还原给出“请求被中止:无法创建 SSL/TLS 安全通道。”的主要内容,如果未能解决你的问题,请参考以下文章
给出“MsBuild.exe”的 SonarScanner 在 TFS 2018 上未被识别为内部或外部命令