SSL: “无法获取本地颁发者证书”

8
我是一名有用的助手,可以翻译文本。

我正在使用OSX:10.12.4

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

我在运行任何git命令时都会收到无法获取本地颁发者证书错误。此外,当尝试使用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文件夹移动到~/桌面,然后重新启动
  • 在safari中导航到https://www.kernel.org/pub/software/scm/git,并查看证书。根据[这些说明](无法发布超过2个链接,抱歉),应该有一个复选框可以“始终信任”该站点。我没有看到这个复选框。
  • 我本来想尝试钥匙串修复,但是这个功能已经在最新的Mac OS中被删除了。
  • 我尝试查看许多其他类似的问题,但是对于许多问题,我很难理解或遵循答案中的说明。
例如,也许squid808在类似问题上的答案可以帮助我。他说:“相反,应该导出我们域中的根CA证书,并告诉Git信任它。”我对此意义知之甚少,不确定它是否与我相关,以及如何去做。根据我的研究,似乎这更适用于运行服务器的人。它似乎也是针对Windows的,而我使用的是Mac。

我知道作为临时解决方案,我可以使用git config --global http.sslVerify false加上curl中的-k选项。然而这些解决方法并不安全,所以我想尽快恢复我的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证书问题。请让我知道是否需要修复此问题的标签。
  • 我本可以发布更相关的链接和图片,但由于声誉受限,我无法这样做。

我还有另一个账户,但我无法保持良好的声誉。我正在努力找出并修复以前所犯的所有错误。非常感谢任何有关如何提高此问题质量的反馈。谢谢。


1
\curl -L <url> | bash -s stable 的输出是什么? - CodeWizard
@CodeWizard,请查看我的更新后的问题。 - Matt Groth
3个回答

6
我需要运行brew doctor并解决一个问题。然后我需要重新启动我的shell。最后,在这两个步骤之后,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

这类似于Homebrew/brew issue 1625中所报告的情况,并由Eduard Rozenberg (edrozenberg)记录:

John Siracusa在12月7日的ATP播客中也报告了类似的问题。问题最可能的触发原因是在iCloud设置中启用iCloud钥匙链。当问题发生时,一个或多个可观察到的症状包括:MacOS弹出消息要求修复/重置钥匙链;在查看Keychain Access工具时,钥匙链似乎为空并且设置为只读模式;在查看Keychain Access工具时,侧边栏上的钥匙链图标缺失(有点边框);尝试在Google Chrome中导航到https://google.com会出现SSL CERT错误;例如运行brew search pip,会显示curl(35)证书错误消息。问题可以通过注销并重新登录和/或重新启动临时解决。解决后,Keychain Access工具将按预期显示所有钥匙链及其内容。该问题可能会在以后再次出现。希望(双手交叉)Mac OS补丁(也许是10.12.2?)将解决根本原因。否则,一个想法是在iCloud首选项中禁用iCloud钥匙链选项(尚未尝试)。

由于您使用的是Mac Sierra 10.12.4版本,我怀疑目前还没有补丁解决此问题。

这个其他问题(由jamver提到):

我在升级到macOS Sierra(10.12)后遇到了这个问题,解决方法来自这个旧版homebrew的工单:

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

值得一提的是,这解决了大部分但不是全部问题。我通过手动使用wget下载包并将它们放置在Homebrew缓存目录中来解决其他问题。

我很想知道正确的修复方法。例如,更新系统CA捆绑包?需要苹果补丁来修复系统捆绑包吗?


0
今晚我遇到了这个问题,将时钟时区设置为“自动”或本地时区就解决了。
我收到了客户的笔记本电脑,时区设置在加拿大的另一个地方。
更改后,重新启动,然后一切都正常工作了。

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