为什么在NuGet存储库中使用SSL?

Sou*_*eAK 5 tfsbuild visual-studio nuget nuget-server

昨天我们的自动构建机器出了问题.我们正在使用TFS Build服务器,当它试图自动下载NuGet包时,我们得到了臭名昭着的"底层连接已关闭:无法建立SSL/TLS安全通道的信任关系"错误.

关于为什么会发生这种情况,'网上有很多线索.那不是我的问题.通过更改NuGet存储库,可以很容易地修复它

https://nuget.org/api/v2/
Run Code Online (Sandbox Code Playgroud)

http://nuget.org/api/v2/ 
Run Code Online (Sandbox Code Playgroud)

要么

http://packages.nuget.org/v1/FeedService.svc/
Run Code Online (Sandbox Code Playgroud)

我想知道的是为什么存储库首先使用SSL?我认为这是有原因的,但我无法弄清楚是什么.没有需要安全性的登录.我想不出任何需要保密的信息.我只是想确保通过使用不安全的连接(工作得很好),我们不会以某种方式破坏我们的构建机器.

任何人都可以解释使用安全连接连接到NuGet所获得的收益吗?

Jul*_*ian 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控制台)可以轻松解决问题.

更新:
在以后的服务中,我遇到了相同的SSL问题,并且仅将GeoTrust添加为可信CA并未解决问题.在此外,服务器还缺少根CA的https://go.microsoft.com/,这是巴尔的摩Cyber​​Trust严格根(去https://microsoft.com,你就可以查看并下载证书).将此添加到受信任的根CA的服务器列表中解决了该问题.