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 上未被识别为内部或外部命令

缺少 TFS msbuild Nuget 包

TFS MSBuild 不为解决方案中的网站恢复 nugets

Jenkins结合.net平台工具之Nuget

MSBUILD:错误MSB1009:项目文件不存在

PTA 7-23 还原二叉树