如何为dotnet core和nuget使用非默认的CA证书?

时间:2019-01-14 07:28:11

标签: ssl .net-core nuget

我的公司在通过Internet与命令行通信时使用自己的ssl证书,例如命令行。 dotnet add package将无法运行:

error: Unable to load the service index for source 
https://api.nuget.org/v3/index.json.
error:   The SSL connection could not be established, see inner exception.
error:   Authentication failed, see inner exception.
error:   The client and server cannot communicate, because they do not possess a common algorithm

反正有让dotnet工具和库使用备用证书吗?

2 个答案:

答案 0 :(得分:0)

据我了解,您公司中有一个中介机构,它封装了与公司SSL的所有连接,因此Nuget无法信任您的SSL证书(它认为中间有一个人会造成安全漏洞)。

您可能要检查Issue #4387Issue 5773

您可能会考虑派生Nuget存储库以禁用SSL强制实施。

此外,从.Net Core 2.1 [3]开始支持AFAIK SSL_CERT_DIRSSL_CERT_FILE环境变量

答案 1 :(得分:0)

这里只需要详细说明。最近,我们一直在致力于其中一款应用程序的容器化,并且由于使用了私有的nuget仓库以及nuget.org,我们最终要做的是使用所有仓库复制nuget配置文件并复制证书crt文件。

如果只有一个回购服务器(在一个域内),则可以使用SSL_CERT_FILE变量,该变量将包含证书的crt文件的路径。

如果像我这样有多个回购服务器(nuget.org和一个私有),则应该SSL_CERT_DIR环境变量。应该将其设置为所有存储库的证书所在的目录。通常,您不需要nuget.org的证书。在这种情况下,不能使用SSL_CERT_FILE变量的原因是,它也会在nuget.org上尝试使用它,并且会失败。因此,在我们的案例中,SSL_CERT_DIR是解决方案,只有一个crt文件供私人回购。

然后dotnet restore --configfile nuget.config不再抱怨