选择 git 主机提供的多个证书之一

Choose one of multiple certificates provided by git host

当尝试在 OS X 10.14.6 上克隆一个 repo 时,它以下列方式失败

$ /usr/bin/git --version
git version 2.21.1 (Apple Git-122.3)
$ /usr/bin/openssl version
LibreSSL 2.6.5
$ git clone https://host/repo.git
Cloning into 'repo'...
fatal: unable to access 'https://host/repo.git/': SSL certificate problem: certificate has expired

它可能会在禁用 ssl 验证的情况下工作,但这不是一个选项。

同一命令在之前未与服务器联系的另一台计算机上成功。

查看 ssllabs.com 显示服务器发送了两个证书链,其中一个具有过期的“DST Root CA X3”证书,另一个有效。 ssllabs.com 还声明此根证书是“在信任库中”而不是服务器发送的。

是否可以为 git 选择特定的(在本例中为未过期的)证书链?

我怀疑无法克隆存储库的计算机以某种方式记住了过期的证书。如果那是真的,有没有办法 forget/reject 过期的证书链?

如果您使用的是 OpenSSL < 1.1.0,听起来您 运行 进入 known issue(请参阅最后一段)并带有 android-compatible 证书(默认颁发像 LetsEncrypt 这样的 CA)。通常,执行定期 OS 软件更新将更新 OpenSSL 并修复此问题。