我的公司在通过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工具和库使用备用证书吗?
答案 0 :(得分:0)
据我了解,您公司中有一个中介机构,它封装了与公司SSL的所有连接,因此Nuget无法信任您的SSL证书(它认为中间有一个人会造成安全漏洞)。
您可能要检查Issue #4387和Issue 5773
您可能会考虑派生Nuget存储库以禁用SSL强制实施。
此外,从.Net Core 2.1 [3]开始支持AFAIK SSL_CERT_DIR
和SSL_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
不再抱怨