如何修复curl:(60)SSL证书:无效的证书链

我得到以下错误运行curl https://npmjs.org/install.sh | sh curl https://npmjs.org/install.sh | sh在Mac OSX 10.9(小牛):

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

我该如何解决?

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

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

单击显示证书button,然后选中标记为始终信任的checkbox。 然后点击继续并根据需要input您的密码。

始终信任复选框

Curl现在应该正确地使用该URL。

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

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

我看到Github的问题,而不是通过SSL加载Safari和命令行与GIT拉。 一旦我删除旧的过期证书一切都很好。

首先,你应该警惕那些抛出SSL错误的URL。 也就是说,你可以用curl来压制证书错误

 curl -k https://insecure.url/content-i-really-really-trust 

在更新到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中禁用SSLvalidation,我能够缓解一些问题。 从控制台(又名shell或terminal):

 git config --global http.sslVerify false 

我推荐这个,因为它违背了SSL的目的,但它是唯一的build议,我发现,捏在一起工作。

我试过rvm osx-ssl-certs update all说明Already are up to date.

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

最终,我必须重置Safari(Safari->重置Safari …菜单)。 然后再访问github.com并select证书,“Always trust”这个感觉不对,并删除了历史logging和存储的密码,但它解决了我的SSLvalidation问题。 甜蜜的胜利

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

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

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

对于那些下载脚本并下载脚本并想快速解决问题的脚本,请创build一个名为~/.curlrc的文件

随着内容

 --insecure 

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

确保完成后删除文件。

UPDATE

12天后,我收到了这个答案的通知,这让我走了“嗯,我按照我自己的build议记得删除.curlrc吗?”,并发现我没有。 所以这真的强调了让这个curl不安全的方法。

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

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