【问题标题】:SSL: 'unable to get local issuer certificate'SSL:'无法获取本地颁发者证书'
【发布时间】:2017-08-31 19:52:50
【问题描述】:

我正在使用 OSX:10.12.4

我最初能够毫无问题地使用 git、homebrew 和 curl。我不记得我做了什么导致它,但突然这些 SSL 错误开始出现在我的 git 命令中。

我在运行任何 git 命令时收到 unable to get local issuer certificate 错误。此外,我在尝试使用brew install git 重新安装 git 时遇到错误。

brew 输出的相关部分:

Downloading https://www.kernel.org/pub/software/scm/git/git-2.12.2.tar.xz

curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

我试过了:

  • 正在重新启动
  • 将 ~/Library/Keychains 文件夹移动到 ~/Desktop,然后重新启动
  • 在 safari 上导航到 https://www.kernel.org/pub/software/scm/git,以及 viewing the certificate。根据[这些说明](不能发布超过 2 个链接,抱歉),应该有一个“始终信任”该站点的复选框。我没有看到这个复选框。
  • 我本来打算试试钥匙串急救,但最近的 Mac OS 中删除了此功能。
  • 我尝试查看许多其他类似的问题,但是,对于许多问题,我无法理解或遵循答案中的说明。

例如,也许 squid808 的 answer 对一个类似的问题可以帮助我。他说:“相反,我应该导出并告诉 Git 信任的是我们域中的根 CA 证书。”我不太了解这意味着什么,或者它是否与我相关,或者我将如何去做。根据我的研究,这似乎更适合运行服务器的人。它似乎也适用于 Windows,我在 Mac 上。

我了解,作为 临时 修复,除了 curl 中的 -k 选项外,我还可以使用 git config --global http.sslVerify false。这些变通办法是不安全的,所以我想尽快恢复我的 SSL 安全性并运行。

输出 curl -L https://homebrew.bintray.com/bottles/libpng-1.6.29.sierra.bottle.tar.gz | bash -s stable(同样失败的 brew 尝试的一部分)

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

道歉

  • 如果我为解决此问题所做的以下尝试看起来分散且杂乱无章,那是因为我很困惑这是一个与 git、curl 或可能两者都不是更相关的问题,而只是一般的 SSL 证书。请让我知道是否应该修复此问题的标签。
  • 我本可以发布更多相关链接和图片,但我受到声誉的限制。

我有另一个帐户,我无法在该帐户上保持良好的声誉。我正在尝试识别并修复我之前做错的所有事情。任何有关如何提高此问题质量的反馈都将不胜感激。谢谢。

【问题讨论】:

  • \curl -L <url> | bash -s stable 的输出是什么
  • @CodeWizard 查看我更新的问题。

标签: git macos ssl curl ssl-certificate


【解决方案1】:

我今晚遇到了这个问题,将时钟的时区修复为“自动”或本地时区已修复。

我在法国收到了客户的笔记本电脑,而时区设置为加拿大的另一个地方。

更改它,重新启动,然后一切正常。

【讨论】:

    【解决方案2】:

    我需要运行 brew doctor 并解决问题。然后我需要重新启动我的外壳。最后,经过这两个步骤, brew install 再次工作。

    不幸的是,我无法确定哪个警告指向了肇事者。当我第一次运行brew doctor 时,可能有大约 10 个警告。在我意识到我需要重新启动我的 shell 之前,我清除了很多,并且在重新启动后它起作用了。


    我想我找到了问题的根源:

    Warning: Setting DYLD_* vars can break dynamic linking.
    Set variables:
      DYLD_LIBRARY_PATH: /Applications/MATLAB/MATLAB_Runtime/v92/runtime/maci64:/Applications/MATLAB/MATLAB_Runtime/v92/sys/os/maci64:/Applications/MATLAB/MATLAB_Runtime/v92/bin/maci64
    

    注释掉一行

    set -x DYLD_LIBRARY_PATH /Applications/MATLAB/MATLAB_Runtime/v92/runtime/maci64:/Applications/MATLAB/MATLAB_Runtime/v92/sys/os/maci64:/Applications/MATLAB/MATLAB_Runtime/v92/bin/maci64
    

    ~/.config/fish/config.fish 中然后重新启动我的shell 似乎解决了我目前的问题。


    感谢@VonC 引用导致我尝试brew doctor 的问题。

    【讨论】:

    • 很好的反馈。 +1
    【解决方案3】:

    这与Homebrew/brew issue 1625 中报告的内容相似,并由Eduard Rozenberg (edrozenberg) 记录:

    ATP 播客的 John Siracusa 在 12 月 7 日的播客中也报告了类似的问题。

    最有可能引发问题:在 iCloud 设置中启用 iCloud 钥匙串

    问题发生时的一个或多个可观察到的症状:

    • 弹出 MacOS 消息,提示必须修复/重置钥匙串
    • 查看钥匙串访问工具时,钥匙串似乎为空并设置为只读模式
    • 查看钥匙串访问工具时,侧边栏上的钥匙串图标丢失(虚线边框)
    • 尝试在 Google Chrome 中导航到 https://google.com 失败并出现 SSL CERT 错误 例如,运行 brew search pip 会显示 curl (35) 证书错误消息

    可以通过注销并重新登录和/或重新启动来暂时解决问题。解决后,钥匙串访问工具将显示所有钥匙串及其内容。该问题可能会在以后再次出现。

    希望(手指 X)Mac OS 补丁(可能是 10.12.2?)能够解决根本原因。

    另外一个想法是禁用 iCloud 首选项中的 iCloud 钥匙串选项(尚未尝试)。

    自从你在 Mac Sierra 10.12.4 中......我怀疑还没有补丁可以解决这个问题。

    这个other issue 提到(jamver):

    我在更新到 macOS Sierra (10.12) 后特别遇到了这个问题,解决方法来自这个 legacy-homebrew 票的解决方法:

    cd ~
    sudo wget http://curl.haxx.se/ca/cacert.pem
    export CURL_CA_BUNDLE=~/cacert.pem
    

    FWIW,这解决了大多数问题,但不是所有问题。我通过使用 wget 手动下载软件包并将它们放在 Homebrew Cache 目录中解决了其他问题。

    我很想知道正确的解决方法。例如更新系统 ca 捆绑包?系统捆绑包需要苹果补丁吗?

    【讨论】:

      猜你喜欢
      • 2016-03-01
      • 2016-04-20
      • 2017-08-30
      • 2016-07-17
      • 2019-04-12
      • 2018-06-20
      相关资源
      最近更新 更多