未以 root 身份运行时 Git 会失败

未以 root 身份运行时 Git 会失败

我刚刚在 CentOS 7 上通过 EPEL 升级到 Git 2.18,现在 Git 无法执行任何涉及与远程服务器通信的操作并显示以下消息

fatal: unable to access 'https://my.repo.git/': Peer's certificate has an invalid signature.

这种情况发生在git clonegit 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

https://stackoverflow.com/questions/17064601/curl-not-working-error-77-for-ssl-connections-on-centos-for-non-root-users

相关内容