Windows7设备访问私有BaGet仓库报错:无法创建SSL/TLS安全通道
Windows 7 访问私有BaGet仓库TLS握手失败解决方案
- 优先检查NuGet客户端版本:Win7环境下运行的NuGet客户端需≥4.6版本才默认支持TLS1.2协议,可执行
nuget help查看当前版本,低版本直接升级到最新适配Win7的NuGet版本即可。 - 强制禁用TLS1.3协议协商:Win7本身不支持TLS1.3,部分高版本NuGet会优先尝试TLS1.3握手导致失败,可新增两个系统环境变量规避:
- 变量名
NUGET_ENABLE_EXPERIMENTAL_TLS13_SUPPORT,值设为0 - 变量名
DOTNET_SYSTEM_NET_SECURITY_DISABLETLS13,值设为1
- 变量名
- 确认证书导入路径正确:私有仓库的crt证书必须导入到本地计算机的「受信任的根证书颁发机构」存储区,仅导入当前用户存储区不会被NuGet全局请求识别。
- 修复.NET Framework TLS支持:Win7自带的.NET Framework 4.5默认未开启TLS1.2支持,需安装KB3154518补丁,同时修改注册表强制.NET运行时启用强加密:
打开注册表编辑器,分别定位到以下两个路径,新建名为SchUseStrongCrypto的DWORD值,数值数据设为1:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319(64位系统必填)
- 验证系统层TLS连通性:运行PowerShell执行以下命令,确认请求正常返回200状态码:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Invoke-WebRequest -Uri https://xxx/v3/index.json
若PowerShell请求正常但NuGet仍报错,可尝试删除NuGet全局配置文件后重新添加私有源地址;若PowerShell也报错,需重新检查系统TLS1.2开关配置和证书有效性。
内容的提问来源于stack exchange,提问作者Michele Ietri
相关产品推荐
相关产品推荐

