Homebrew: “curl: (60) SSL证书: 无法获取本地颁发者证书”

4
我正在尝试在我的Mac上安装Homebrew和Tensorflow。在输入以下命令后,
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

(来自Homebrew)在终端中,我得到了以下错误信息:

curl: (60) SSL证书问题:无法获取本地颁发者证书

更多细节请参见:http://curl.haxx.se/docs/sslcerts.html

更新:Mac 版本为 OS X El Capitan 10.11.5


附注:如果您能提供一些解释的解决方案,我将不胜感激。这是我第一次使用Mac OS。


你用的是哪个版本的Mac OS? - Thomas Ayoub
这是OS X El Capitan 10.11.5。 - Sean
1
好的,请尝试使用“/usr/bin/ruby -e” $“(curl -fsSLk https://raw.githubusercontent.com/Homebrew/install/master/install)”。 - Thomas Ayoub
1
我看到了“-k”建议,但尝试将其作为“-e-k”。谢谢。 - Sean
我发现在Mac上使用Miniconda而不是Homebrew来设置TensorFlow要容易得多。 - webb
6个回答

13

看起来你的curl在证书验证方面遇到了一些问题。你可以通过启用-k选项来跳过它:

/usr/bin/ruby -e "$(curl -fsSLk https://raw.githubusercontent.com/Homebrew/install/master/install)"

11
为什么raw.githubusercontent.com会给他带来证书问题呢?跳过检查只是隐藏了问题,而不是真正解决了它们。毫无疑问,使用相同版本的Mac OS的其他用户没有遇到同样的问题吧? - Daniel Stenberg
2
@DanielStenberg 这不是一个修复,而是一个解决方法,可能的原因是 OP 的时钟设置为 2001 年(例如)。 - Thomas Ayoub

2

我在升级到High Sierra后遇到了与git类似的问题。以下步骤为我解决了这个问题:

  1. 在Safari中访问导致问题的网站。
  2. 查看证书的详细信息(特别是信任链中较高的项目)。
  3. 打开钥匙串访问,找到这些证书。
  4. 对于每一个证书,展开“信任”部分并选择“始终信任”(只有当你真正信任它们时才这样做;-))

这为我解决了问题。


2

只需手动下载文件https://raw.githubusercontent.com/Homebrew/install/master/install.sh到您的下载文件夹,然后在终端中

确保Homebrew目录存在。

cp Downloads/install.sh /opt/homebrew

cd /opt/homebrew

然后将其变为可执行文件

chmod +x install.sh

运行它

/bin/bash -c ./install.sh

或者

/bin/bash -e ./install.sh

祝您有美好的一天


1

我也有同样的症状,花了一整天时间查找。结果发现我的 curl 出了问题,因为 HTTPS_PROXY 被设置成了其他内容。

我的解决办法是 export HTTPS_PROXY=""


1

这个问题出现在使用homebrew时,内部使用的curl无法使用它用于验证的证书颁发机构进行验证。

与其避免验证证书,更好的替代方案是将缺失的证书颁发机构(CA)添加到homebrew证书存储中。

在我的情况下,我的公司使用Zscaler Private Access,它拦截、加密并通过Zscaler网络路由互联网流量。加密内容只能由Zscaler证书解密,可以使用Zscaler CA进行验证。这导致homebrew出现了此处提到的错误。

为了解决这个问题,我做了几件事:

  1. 将Zscaler根CA证书添加到homebrew的ca-certificates中
cat Zscaler_Root_CA.crt >> /home/linuxbrew/.linuxbrew/etc/ca-certificates/cert.pem
  1. 按照 homebrew 环境配置 中提到的步骤,配置 Homebrew 使用自己的 CA 证书。
export HOMEBREW_FORCE_BREWED_CA_CERTIFICATES=1

-1

如果有人在使用PHP运行CURL时遇到相同的问题,与@Thomas Ayoub的答案等效的方法是使用:

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

如果有办法更新PHP的CA文件(或其他所需文件),以便获取所需的证书,那将是非常好的。


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