> ## Content Index
> Fetch the complete content index at: https://blog.skitisu.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# 解决dotnet restore NuGet报证书错误的问题
- URL: https://blog.skitisu.com/solve-dotnet-restore-nuget-invalid-certificate/
- Published: 2020-02-17T08:28:37.000Z
- Updated: 2021-06-02T03:07:40.000Z
- Author: SkiTiSu
- Tags: Uncategorized, #Import 2026-10-21 14:41

刚给服务器装好dotnet准备跑起来，发现NuGet竟然闹幺蛾子了：

```shell
> dotnet restore
/usr/share/dotnet/sdk/3.1.101/NuGet.targets(123,5): error : Unable to load the service index for source https://api.nuget.org/v3/index.json. [/www/dotnet/xxx/xxx.csproj]
/usr/share/dotnet/sdk/3.1.101/NuGet.targets(123,5): error :   The SSL connection could not be established, see inner exception. [/www/dotnet/xxx/xxx.csproj]
/usr/share/dotnet/sdk/3.1.101/NuGet.targets(123,5): error :   The remote certificate is invalid according to the validation procedure. [/www/dotnet/xxx/xxx.csproj]
```

从提示信息来看，应该是根CA证书有问题，但是用`update-ca-trust`后也没用，OpenSSL版本也不老，再用`openssh version -a`检查一下证书路径也没问题。绝望之时搜到GitHub上一个讨论：  
[https://github.com/NuGet/Home/issues/8169#issuecomment-497591809](https://github.com/NuGet/Home/issues/8169?ref=blog.skitisu.com#issuecomment-497591809)

> I found it was caused by my wrong configuration of SSL CA certificate path.  
> After I update openssl to 1.1.1, the CA path is modified to "/usr/local/ssl/certs", but it is an empty folder. Before updating openssl, the old version points to "/usr/lib/ssl/certs". After I manually link "/usr/local/ssl/certs" to /etc/ssl/certs. This error disappears.

检查了一下，发现好像有两个OpenSSL……咱也不知道咋回事，用的是阿里云CentOS带BT面板的镜像，真的在/usr/local/openssl/这里还有一个，dotnet用的应该是这里的，点开certs文件夹一看，果然是空的，所以我们把这个文件夹删了，然后建一个软链接到正确的证书目录：

```shell
ln -s /etc/ssl/certs /usr/local/openssl/certs
```

成功！

如果你也有这样的问题，记得到目录里找找是不是由于空的certs文件夹导致的。当然如果像我这样是有两个OpenSSL的奇葩情况，最好，emmm，重装一下？

Enjoy\~

---

2021/06/02更新：

这两天迁移了服务器，跑程序起来，其中有HttpClient碰到了`System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.`，然后在网上找了半天也解决不了，准备加个CustomHandler，直接忽略掉所有证书判断了事，结果在编译的时候nuget报错，对，就是本文的同一个错误，我就很郁闷，看来糊一下是不行了，得彻底解决这个问题。

上谷歌搜，一搜，排名第二的，就是这篇文章……光速解决……被自己蠢哭了，自己记录下的东西还是要经常复习啊（语重心长）。

顺便再吐槽一下宝塔面板镜像，这次用的是腾讯云，没想到也有这样的问题，估计很少有人跑dotnet程序，所以没人发现吗……

---

本文被以下文章引用，其他作者也遇到了类似情况有不同的具体解决方法，可以参考：  
[Unable to load the service index for source 排错过程分享 - 云+社区 - 腾讯云](https://cloud.tencent.com/developer/article/1598543?ref=blog.skitisu.com "Unable to load the service index for source 排错过程分享 - 云+社区 - 腾讯云")