Ubuntu 20.04 上的 Nuget 包还原失败,远程证书无效

Nuget Package restore failing on Ubuntu 20.04 with remote certificate is invalid

我有一个 .net core 3.1 项目,我正试图在 Ubuntu 20.04 虚拟机上构建。

项目构建成功,我现在需要更新项目中的一个 NuGet 包。将 .csproj 文件中的包版本更改为所需版本后,当我构建或执行“dotnet restore”时,我收到以下消息:

/usr/share/dotnet/sdk/3.1.415/NuGet.targets(128,5): error : Unable to load the service index for source https://api.nuget.org/v3/index.json. [/home/ic/Source/redacted.csproj]
/usr/share/dotnet/sdk/3.1.415/NuGet.targets(128,5): error :   The SSL connection could not be established, see inner exception. [/home/ic/Source/redacted.csproj]
/usr/share/dotnet/sdk/3.1.415/NuGet.targets(128,5): error :   The remote certificate is invalid according to the validation procedure. [/home/ic/Source/redacted.csproj]

如果我浏览到 https://api.nuget.org/v3/index.json,我可以在浏览器中成功查看 json,并且证书似乎是可信的。

我有:

不确定到底是什么真正解决了我的问题,但是,长话短说,我认为以下方法有效:

运行 wget on api.nuget.org 给出:

--2021-12-02 09:38:34--  https://api.nuget.org/v3/index.json
Resolving api.nuget.org (api.nuget.org)... 152.199.40.167
Connecting to api.nuget.org (api.nuget.org)|152.199.40.167|:443... connected.
ERROR: cannot verify api.nuget.org's certificate, issued by 'CN=Microsoft Azure TLS Issuing CA 05,O=Microsoft Corporation,C=US’:
  Unable to locally verify the issuer's authority.
To connect to api.nuget.org insecurely, use `--no-check-certificate'.

在研究该错误的某个时候,我重新安装了 ca 证书(不确定这是否与解决问题有关):

sudo apt-get install --reinstall ca-certificates

最终,我发现: 这让我设置了 SSL_CERT_FILE 环境变量:

export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

这似乎是关键所在,dotnet restore 现在可以正常工作了。