我刚刚在 CentOS 7 上通过 EPEL 升级到 Git 2.18,现在 Git 无法执行任何涉及与远程服务器通信的操作并显示以下消息
fatal: unable to access 'https://my.repo.git/': Peer's certificate has an invalid signature.
这种情况发生在git clone
、git pull
等情况下。如果我使用它们运行相同的命令,sudo
它们就可以正常工作。这让我觉得可能是错误的文件权限阻止了 Git 访问它所需的证书或凭据。但是,我不知道在哪里检查以及检查哪些证书。在详细模式下运行 Git 不会发出任何附加信息。
答案1
主要问题是我有两个副本pkcs11.txt
:本地副本~/.pki/nssdb/
和系统副本/etc/pki/nssdb/
。 Git 更喜欢系统版本而不是本地用户版本。很长一段时间我只有本地版本,其中包含访问我的存储库所需的 PKCS 信息。在某个时刻,一个新包(可能是 Git 更新)创建了该文件的系统版本,该文件没有必要的 PKCS 信息。因此,当 Git(通过 NSS)开始从pkcs11.txt
.
解决方法是将我的本地副本合并到系统范围的副本中。
帮助解决这个问题的一些事情是设置以下环境变量:
GIT_CURL_VERBOSE=1
GIT_TRACE_VERBOSE=2
和这些线程:
https://superuser.com/questions/1091521/centos-7-wont-accept-any-ssl-certificates