73

curl https://npmjs.org/install.sh | sh在 Mac OSX 10.9 (Mavericks) 上运行时出现以下错误:

install npm@latest
curl: (60) SSL certificate problem: Invalid certificate chain
More details here: http://curl.haxx.se/docs/sslcerts.html

我该如何解决?

4

11 回答 11

93

首先,您应该警惕引发 SSL 错误的 url。话虽如此,您可以curl使用

curl -k https://insecure.url/content-i-really-really-trust
于 2014-03-04T11:41:22.390 回答
80

在 Mac OS X 10.9 (Mavericks) 上使用 Safari 浏览器(不是 Chrome、Firefox 或 Opera)访问https://registry.npmjs.org

显示证书错误的 Safari 屏幕截图

单击显示证书按钮,然后选中标记为始终信任的复选框。然后单击继续并在需要时输入您的密码。

始终信任复选框

Curl 现在应该可以正确使用该 URL。

于 2013-10-31T12:10:42.840 回答
22

注意:这个答案显然违背了 SSL 的目的,应该谨慎使用作为最后的手段。

对于那些对下载脚本的脚本有问题并希望快速修复的脚本,请创建一个名为~/.curlrc

随着内容

--insecure

这将导致 curl 默认忽略 SSL 证书问题。

确保完成后删除文件。

更新

12 天后,我收到了关于这个答案的赞成票的通知,这让我去“嗯,我是否按照自己的建议记得删除那个.curlrc?”,然后发现我没有。所以这真的强调了通过遵循这种方法让你的 curl 不安全是多么容易。

于 2017-10-20T06:30:59.167 回答
19

问题是不再使用的过期中间证书必须删除。这是 Digicert 的一篇博文,解释了这个问题以及如何解决它。

https://blog.digicert.com/expired-intermediate-certificate/

我在 Safari 和使用 git pull 的命令行中都看到了 Github 没有通过 SSL 加载的问题。一旦我删除了旧的过期证书,一切都很好。

于 2014-08-02T18:04:43.680 回答
8

更新到 OS X 10.9.2 后,我开始遇到 Homebrew、Textmate、RVM 和 Github 的 SSL 证书无效问题。

当我启动 abrew update时,我收到以下错误:

fatal: unable to access 'https://github.com/Homebrew/homebrew/': SSL certificate problem: Invalid certificate chain
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master

我可以通过在 Git 中禁用 SSL 验证来缓解一些问题。从控制台(又名外壳或终端):

git config --global http.sslVerify false

我很容易推荐这个,因为它违背了 SSL 的目的,但这是我发现的唯一一个在紧要关头有效的建议。

我试过rvm osx-ssl-certs update allAlready are up to date.

在 Safari 中,我访问了https://github.com并尝试手动设置证书,但 Safari 没有提供信任证书的选项。

最终,我不得不重置 Safari(Safari->Reset Safari... 菜单)。然后访问 github.com 并选择证书,然后“始终信任”这感觉不对并删除历史记录和存储的密码,但它解决了我的 SSL 验证问题。一场苦乐参半的胜利。

于 2014-03-04T12:46:08.513 回答
3

另一个原因可能是 KeyChain 中的重复键。我在有重复的“DigiCert High Assurance EV Root CA”的两台 Mac 上看到了这个问题。一个在登录钥匙串中,另一个在系统中。从登录钥匙串中删除证书解决了这个问题。

这影响了 Safari 浏览器以及命令行上的 git。

于 2014-03-26T23:28:59.497 回答
1

在 Yosemite (10.10.1) 上安装最新的命令行工具更新 (6.1) 后,我开始看到此错误。在这种特殊情况下,重新启动系统修复了错误(自更新以来我没有重新启动)。

提到这一点,以防万一有同样问题的人像我一样遇到这个页面。

于 2014-12-07T21:26:24.857 回答
1

在尝试了上述所有解决方案以消除“curl:(60)SSL 证书问题:无法获取本地颁发者证书”错误之后,最终在 OSX 10.9 上为我工作的解决方案是:

  1. 找到 curl 证书 PEM 文件位置 'curl-config --ca' --> /usr/local/etc/openssl/cert.pem

  2. 使用文件夹位置来识别 PEM 文件“cd /usr/local/etc/openssl”

  3. 创建 cert.pem 文件“cp cert.pem cert_pem.bkup”的备份

  4. 从 curl 网站“sudo wget http://curl.haxx.se/ca/cacert.pem ”下载更新的证书文件

  5. 复制下载的 PEM 文件以替换旧的 PEM 文件“cp cacert.pem cert.pem”

    这是发布的解决方案的修改版本,以纠正此处发现的 Ubuntu 中的相同问题:

https://serverfault.com/questions/151157/ubuntu-10-04-curl-how-do-i-fix-update-the-ca-bundle

于 2018-03-22T04:09:50.230 回答
1

在某些系统(例如您的办公系统)中,有时会出于安全目的安装防火墙/安全客户端。尝试卸载它,然后再次运行该命令,它应该会开始下载。

我的系统安装了 Netskope 客户端并阻止了 ssl 通信。

在 finder -> 卸载 netskope 中搜索,运行它,然后尝试安装 homebrew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

PS:考虑安装安全客户端。

于 2020-05-06T08:13:43.930 回答
1

假设您尝试 使用brewcurl下载或安装集线器,然后,您会收到如下错误:

==> Downloading https://ghcr.io/v2/linuxbrew/core/ncurses/manifests/6.2
curl: (60) SSL certificate problem: unable to get local issuer certificate

然后,让ghcr.io作为服务器,执行以下命令:

cd ~
# Download the cert:
openssl s_client -showcerts -servername ghcr.io  -connect ghcr.io:443 > cacert.pem
# type "quit", followed by the "ENTER" key / or Ctrl+C
# see the data in the certificate:
openssl x509 -inform PEM -in cacert.pem -text -out certdata-ghcr.io.txt
# move the file to certificate store directory:
sudo mv cacert.pem /usr/local/share/ca-certificates/cacert-ghcr.io.crt
# update certificates
sudo update-ca-certificates
# done !

参考

于 2021-06-24T23:33:28.753 回答
0

MAC OS HIGH SIERRA ~$brew install curl ca-certificates 对我来说就像一个魅力。

于 2022-01-21T00:08:57.130 回答