昨天我们的自动构建机遇到了问题。我们正在使用TFS Build服务器,当它试图自动下载NuGet包时,我们得到了臭名昭着的“底层连接已关闭:无法建立SSL / TLS安全通道的信任关系”错误。
围绕网络有很多关于为什么会发生这种情况的线索。那不是我的问题。通过从
更改NuGet存储库,可以很容易地修复它https://nuget.org/api/v2/
到
http://nuget.org/api/v2/
或
http://packages.nuget.org/v1/FeedService.svc/
我想知道的是,存储库首先使用SSL的原因是什么?我认为这是有原因的,但我无法弄清楚是什么。没有需要安全性的登录。我想不出任何需要保密的信息。我只想确保通过使用不安全的连接(工作正常),我们不会以某种方式破坏我们的构建机器。
有人可以解释使用安全连接连接到NuGet所获得的收益吗?
答案 0 :(得分:8)
我想不出任何需要发送的信息 安全
这不一定是因为您与nuget.org交换的信息包含任何秘密信息,因此需要保密。通过使用SSL,您可以确定它实际上是 您正在与之交谈的nuget.org。如果没有SSL,理论上有人可能会为您提供伪造的软件包,这可能是一个安全问题。
至于您遇到的问题“无法建立SSL / TLS安全通道的信任关系”,我们在开始使用新的构建服务器时遇到了类似的问题:
如果您查看https://nuget.org/提供的SSL证书,则认证路径为:GeoTrust Global CA> RapidSSL CA> * .nuget.org
GeoTrust Global CA在我们的新构建服务器上缺少可信CA,因此通过将它们添加到受信任的根CA的构建服务器列表(使用带有“证书”管理单元的MMC控制台)可以轻松解决问题。 / p>
更新
在以后的服务中,我遇到了相同的SSL问题,并且仅将GeoTrust添加为可信CA并未解决问题。在添加中,https://go.microsoft.com/的根CA也缺少服务器,这是Baltimore CyberTrust Root(转到https://microsoft.com,您将能够查看和下载证书)。将此添加到受信任的根CA的服务器列表中解决了该问题。