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
我该如何解决?
首先,您应该警惕引发 SSL 错误的 url。话虽如此,您可以curl
使用
curl -k https://insecure.url/content-i-really-really-trust
在 Mac OS X 10.9 (Mavericks) 上使用 Safari 浏览器(不是 Chrome、Firefox 或 Opera)访问https://registry.npmjs.org
单击显示证书按钮,然后选中标记为始终信任的复选框。然后单击继续并在需要时输入您的密码。
Curl 现在应该可以正确使用该 URL。
注意:这个答案显然违背了 SSL 的目的,应该谨慎使用作为最后的手段。
对于那些对下载脚本的脚本有问题并希望快速修复的脚本,请创建一个名为~/.curlrc
随着内容
--insecure
这将导致 curl 默认忽略 SSL 证书问题。
确保完成后删除文件。
更新
12 天后,我收到了关于这个答案的赞成票的通知,这让我去“嗯,我是否按照自己的建议记得删除那个.curlrc
?”,然后发现我没有。所以这真的强调了通过遵循这种方法让你的 curl 不安全是多么容易。
问题是不再使用的过期中间证书必须删除。这是 Digicert 的一篇博文,解释了这个问题以及如何解决它。
https://blog.digicert.com/expired-intermediate-certificate/
我在 Safari 和使用 git pull 的命令行中都看到了 Github 没有通过 SSL 加载的问题。一旦我删除了旧的过期证书,一切都很好。
更新到 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 all
了Already are up to date.
在 Safari 中,我访问了https://github.com并尝试手动设置证书,但 Safari 没有提供信任证书的选项。
最终,我不得不重置 Safari(Safari->Reset Safari... 菜单)。然后访问 github.com 并选择证书,然后“始终信任”这感觉不对并删除历史记录和存储的密码,但它解决了我的 SSL 验证问题。一场苦乐参半的胜利。
另一个原因可能是 KeyChain 中的重复键。我在有重复的“DigiCert High Assurance EV Root CA”的两台 Mac 上看到了这个问题。一个在登录钥匙串中,另一个在系统中。从登录钥匙串中删除证书解决了这个问题。
这影响了 Safari 浏览器以及命令行上的 git。
在 Yosemite (10.10.1) 上安装最新的命令行工具更新 (6.1) 后,我开始看到此错误。在这种特殊情况下,重新启动系统修复了错误(自更新以来我没有重新启动)。
提到这一点,以防万一有同样问题的人像我一样遇到这个页面。
在尝试了上述所有解决方案以消除“curl:(60)SSL 证书问题:无法获取本地颁发者证书”错误之后,最终在 OSX 10.9 上为我工作的解决方案是:
找到 curl 证书 PEM 文件位置 'curl-config --ca' --> /usr/local/etc/openssl/cert.pem
使用文件夹位置来识别 PEM 文件“cd /usr/local/etc/openssl”
创建 cert.pem 文件“cp cert.pem cert_pem.bkup”的备份
从 curl 网站“sudo wget http://curl.haxx.se/ca/cacert.pem ”下载更新的证书文件
复制下载的 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
在某些系统(例如您的办公系统)中,有时会出于安全目的安装防火墙/安全客户端。尝试卸载它,然后再次运行该命令,它应该会开始下载。
我的系统安装了 Netskope 客户端并阻止了 ssl 通信。
在 finder -> 卸载 netskope 中搜索,运行它,然后尝试安装 homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
PS:考虑安装安全客户端。
假设您尝试
使用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 !
MAC OS HIGH SIERRA ~$brew install curl ca-certificates
对我来说就像一个魅力。