我在Mac OSX 10.9(Mavericks)上运行curl https://npmjs.org/install.sh | sh
时遇到以下错误:
install npm@latest
curl: (60) SSL certificate problem: Invalid certificate chain
More details here: http://curl.haxx.se/docs/sslcerts.html
我该如何解决这个问题?
答案 0 :(得分:65)
在Mac OS X 10.9(Mavericks)上使用Safari浏览器(不是Chrome,Firefox或Opera)访问https://registry.npmjs.org
单击“显示证书”按钮,然后选中“始终信任”复选框。然后单击“继续”并根据需要输入密码。
Curl现在应该正确使用该URL。
答案 1 :(得分:26)
首先,你应该警惕抛出SSL错误的网址。话虽这么说,您可以使用
来抑制curl
中的证书错误
curl -k https://insecure.url/content-i-really-really-trust
答案 2 :(得分:18)
问题是已过期的中间证书不再使用,必须删除。以下是Digicert的博客文章,解释了该问题以及解决方法。
https://blog.digicert.com/expired-intermediate-certificate/
我看到Github没有在Safari和命令行中通过SSL加载git pull的问题。一旦我删除旧的过期证书,一切都很好。
答案 3 :(得分:8)
更新到OS X 10.9.2后,我开始使用Homebrew,Textmate,RVM和Github进行无效的SSL证书问题。
当我发起brew 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验证来缓解一些问题。从控制台(a.k.a. shell或终端):
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->重置Safari ...菜单)。然后访问github.com并选择证书,并“始终信任”此感觉错误并删除历史记录和存储的密码,但它解决了我的SSL验证问题。苦乐参半的胜利。
答案 4 :(得分:7)
注意:这个答案显然违背了SSL的目的,应该作为最后的手段谨慎使用。
对于那些下载脚本以下载脚本并希望快速修复的脚本问题,请创建一个名为~/.curlrc
的文件
内容
--insecure
默认情况下,这会导致curl忽略SSL证书问题。
确保在完成后删除文件。
<强>更新强>
12天后,我收到了关于这个答案的评价通知,这让我走了“嗯,我是否按照自己的建议记得删除.curlrc
?”,并发现我没有。所以这真的强调了通过遵循这种方法让你的卷曲不安全是多么容易。
答案 5 :(得分:3)
另一个原因可能是KeyChain中的重复键。我在两个有重复“DigiCert High Assurance EV Root CA”的mac上看到了这个问题。一个在登录钥匙串中,另一个在系统中。从登录密钥链中删除证书解决了这个问题。
这会影响Safari浏览器以及命令行上的git。
答案 6 :(得分:1)
在Yosemite(10.10.1)上安装最新的命令行工具更新(6.1)后,我开始看到此错误。在这种特殊情况下,重新启动系统修复了错误(自更新以来我没有重新启动)。
如果遇到同样问题的人遇到此问题,请提及此问题,就像我一样。
答案 7 :(得分:0)
尝试上述所有解决方案以消除“curl:(60)SSL证书问题:无法获取本地颁发者证书”错误后,最终在OSX 10.9上为我工作的解决方案是:
找到卷曲证书PEM文件位置 'curl-config --ca' - &gt; /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
答案 8 :(得分:0)
在某些系统(如办公系统)中,有时出于安全目的而安装了防火墙/安全客户端。尝试卸载该文件,然后再次运行该命令,它将开始下载。
我的系统已安装Netskope Client,并阻止了ssl通信。
在finder中搜索->卸载netskope,运行它,然后尝试安装自制软件:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
PS:考虑安装安全客户端。
答案 9 :(得分:0)
假设您尝试使用 curl
下载某些内容或安装 hub
使用 brew,然后,您会收到如下错误:
==> 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 !