Ubuntu 20.04下.NET Core 3.1项目NuGet包还原提示远程证书无效
解决步骤
- 升级.NET Core 3.1 SDK修复已知缺陷
你当前使用的3.1.415版本SDK存在Linux环境下SSL证书校验的已知问题,先升级到3.1分支的最终补丁版本:
sudo apt install apt-transport-https sudo apt update sudo apt install dotnet-sdk-3.1
升级后执行dotnet --version确认版本号不低于3.1.426,再尝试执行dotnet restore。
- 切换HTTP处理程序规避证书读取异常
.NET Core 3.1默认的SocketsHttpHandler存在系统根证书读取异常的问题,执行命令前临时设置环境变量切换到旧版处理程序测试:
export DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER=0 dotnet restore
如果恢复正常,可将该环境变量写入~/.bashrc文件永久生效。
- 强制同步系统CA证书链
即使已确认根证书存在,仍需手动同步到.NET默认读取的证书路径:
sudo cp /usr/share/ca-certificates/mozilla/DigiCert_Global_Root_CA.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates
执行完成后重启终端再尝试恢复依赖。
额外排查点:如果你的网络环境使用了中间人代理,需将代理的根证书也导入到
/usr/local/share/ca-certificates/目录再执行证书更新,浏览器导入的证书仅对浏览器本身生效,不会自动同步到系统全局证书存储。临时验证方案:如果以上操作均无效,可临时关闭NuGet证书校验确认问题根因(仅用于测试,不建议长期使用),在项目目录下新建临时
NuGet.Config文件写入以下内容:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> </packageSources> <packageSourceTrust> <add key="nuget.org" allowUntrustedRoot="true" /> </packageSourceTrust> </configuration>
再执行dotnet restore验证是否可以正常运行。
内容的提问来源于stack exchange,提问作者Iain Carlin
相关产品推荐
相关产品推荐

