53

我正在尝试在 Linux(Ubuntu 12)上运行 NuGet。我有 Mono 3.0.6(从源代码编译)。

$ mono --runtime=v4.0.30319 .nuget/NuGet.exe update -self
Checking for updates from https://nuget.org/api/v2/.
Error getting response stream (Write: The authentication or decryption has failed.): SendFailure

我收集到,该错误是由于某些证书(最有可能是 nuget.org 证书)不受信任所致。这篇博文有更多细节

所以我跑了:

$ mozroots --import --sync
$ certmgr -ssl https://go.microsoft.com
$ certmgr -ssl https://nugetgallery.blob.core.windows.net
$ certmgr -ssl https://nuget.org

……无济于事。

NuGet 版本是 2.3.0.0(尽管我从一些旧版本开始也无法使用)。

我该如何解决这个错误?

4

1 回答 1

111

我可以通过将证书导入机器存储而不是用户存储来实现这一点,这是默认设置:

$ sudo mozroots --import --machine --sync
$ sudo certmgr -ssl -m https://go.microsoft.com
$ sudo certmgr -ssl -m https://nugetgallery.blob.core.windows.net
$ sudo certmgr -ssl -m https://nuget.org

我验证了在我这样做之前——即使在完成了基于用户存储的原始命令之后——tlstest.exe 工具也失败了,并且在导入到机器存储之后它成功了。

而且,当然对我来说最重要的是,nuget 也从那时开始工作。:)

于 2013-05-16T13:47:08.150 回答