curl SSL证书错误

3
我一直在尝试在我的MacBook Pro上安装meteor,并且一直面临着证书问题。我收到了以下错误信息:
curl:(60)SSL证书问题:自签名证书在证书链中
更多细节请参见:https://curl.haxx.se/docs/sslcerts.html">https://curl.haxx.se/docs/sslcerts.html
默认情况下,curl使用证书颁发机构(CA)公钥(CA证书)的“bundle”执行SSL证书验证。如果默认bundle文件不够用,您可以使用--cacert选项指定替代文件。如果此HTTPS服务器使用由bundle中的CA表示的CA签名的证书,则证书验证可能会因证书存在问题(可能已过期,或者名称与URL中的域名不匹配)而失败。如果你想关闭curl对证书的验证,请使用-k(或--insecure)选项。
在使用curl --insecure https://install.meteor.com | ssh后,我收到以下错误消息:
下载Meteor分发 curl: (60) SSL证书问题:无法获取本地颁发机构证书 更多细节请参见:https://curl.haxx.se/docs/sslcerts.html curl默认使用证书颁发机构(CA)公钥(CA证书)的“束”执行SSL证书验证。如果默认的束文件不足够,您可以使用--cacert选项指定备用文件。如果此HTTPS服务器使用由束中表示的CA签名的证书,则证书验证可能失败,原因是证书存在问题(可能已过期,或名称与URL中的域名不匹配)。如果您想关闭curl对证书的验证,请使用-k(或--insecure)选项。安装失败。(请注意安装失败消息。) 请帮我解决这个问题。 提前致谢。 编辑: 在像Fedor要求我运行的curl install.meteor.com | sh -x之后,我收到了以下消息:
run_it
RELEASE=1.2.1
PREFIX=/usr/local
set -e set -u
exec ++ uname UNAME=Darwin
'[' Darwin '>' MINGW -a Darwin '<' MINGX ']'
'[' Darwin '!=' Linux -a Darwin '!=' Darwin ']'
'[' Darwin = Darwin ']' ++ uname -p ++ sysctl -n hw.cpu64bit_capable '[' i386 '!=' i386 -o 1 '!=' 1 ']'
grep BUNDLE_VERSION /usr/local/bin/meteor PLATFORM=os.osx.x86_64
trap 'echo Installation failed.' EXIT
'[' -e /Users/usama/.meteor ']'
TARBALL_URL=https://d3sqy0vbqsdhku.cloudfront.net/packages-bootstrap/1.2.1/meteor-bootstrap-os.osx.x86_64.tar.gz INSTALL_TMPDIR=/Users/usama/.meteor-install-tmp rm -rf /Users/usama/.meteor-install-tmp mkdir /Users/usama/.meteor-install-tmp echo 'Downloading Meteor distribution' Downloading Meteor distribution
curl --progress-bar --fail https://d3sqy0vbqsdhku.cloudfront.net/packages-bootstrap/1.2.1/meteor-bootstrap-os.osx.x86_64.tar.gz tar -xzf - -C /Users/usama/.meteor-install-tmp -o

如需更多信息,请询问。 - UsamaMan
4个回答

2
快速回答是:您下载的安装脚本会自行调用curl来下载tarball,而且没有使用-k选项:
$ curl -s https://install.meteor.com | grep curl
curl --progress-bar --fail "$TARBALL_URL" | tar -xzf - -C "$INSTALL_TMPDIR" -o

为了在curlrc中添加curl,您可以加上--insecure选项:
$ echo insecure >> ~/.curlrc

或者只使用http:
$ curl http://install.meteor.com

但我强烈建议您查看问题本身 - 可能有人在中间进行攻击。对于install.meteor.com的证书,我觉得它是正常的。


非常抱歉,我不太了解终端命令。运行第二个命令后,我得到了以下内容: _curl: (3) <url> 格式错误 tar: 无法切换到'' - UsamaMan
我在问题中添加了消息,请在“Edit:”部分之后查看。 - UsamaMan
抱歉,我真的不知道curl为什么认为提供的URL格式不正确。如果您手动运行curl,它是否开始下载?如果它能够启动,应该会显示进度条。http://pastebin.com/VYCE4QJ3 - Fedor Zhukov

1
这是我解决这个问题的方法。
  1. 在浏览器中浏览安装脚本。(https://install.meteor.com/)

  2. 将脚本保存到您的主目录下,命名为install_meteor.sh。

  3. 在终端中运行sh install_meteor.sh

如果您像这样运行,您会发现错误实际上发生在安装脚本中。您需要做的是编辑脚本以使其忽略证书验证。
  1. 输入vi install_meteor.sh以编辑安装脚本。

  2. 找到这一行:curl --progress-bar --fail "$TARBALL_URL" | tar -xzf - -C "$INSTALL_TMPDIR" -o

  3. 将其更改为:curl -k --progress-bar --fail "$TARBALL_URL" | tar -xzf - -C "$INSTALL_TMPDIR" -o

  4. 保存并再次运行sh install_meteor.sh


0

我在使用VMbox安装Ubuntu 16并通过VPN路由时遇到了这个问题。在浏览器中检查https://install.meteor.com,我的问题是CA显示的过期和续订日期已经过去了。

我的VM机器日期偏差了几天(不确定是怎么发生的),时间被我的位于另一个国家的VPN自动设置。手动设置日期和时间修正了CA问题。

注意:在我的情况下,日期偏差了4天,然而,即使时间和日期设置正确,仍有可能发生此错误 — 这取决于CA相对于系统日期/时间设置何时过期和续订。您可以等待一天后再尝试curl,或更快的解决方案是适当地设置日期/时间并重试。


0

我重新安装了操作系统,错误就消失了。我知道这不应该是解决方案,但这对我起作用了。希望其他人能发布更好的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接