设置证书验证位置出错 - Github

32

我在通过 Git Bash 访问github存储库时遇到了问题。

两天前,我还能够推送/拉取存储库。然后

1)我在gitlab.com上创建了一个帐户

2)我在本地pc上使用Windows上的git bash生成了SSH密钥,按照GitLab和SSH密钥 的说明进行操作

3)此后,我没有在gitlab上创建/拉取/推送任何存储库。

今天,我对代码进行了一些更改(该代码已部署在github上),当我尝试推送该代码时,出现以下错误:

fatal: unable to access 'https://github.com/junaidbinsarfraz/repo.git/': error setting certificate verify locations:
  CAfile: E:/Softwares/Git/mingw64/libexec/ssl/certs/ca-bundle.crt
  CApath: none

libexec 中没有 ssl 文件夹。

libexec folder

自 2017 年 1 月以来,Git 文件夹中也没有更改的文件/文件夹。

enter image description here

这似乎是一个 git-bash 问题,但不确定。有人能提供帮助吗?

8个回答

37

在我的情况下,在Windows上,即使为git配置设置了namee-mail和证书路径之后,它仍然无法工作。通过从命令提示符中运行以下命令解决了此问题。

git config --global http.sslcainfo "C:\Program Files\Git\usr\ssl\certs\ca-bundle.crt"

在您的情况下,ca-bundle.crt的路径可能会有所不同。


1
最好在您的电脑上更改GIT目录。在我的情况下,我将其从C:/Program Files更改为C:/Program Files (x86)。 - Leffa

9
首先,创建SSH密钥对对于HTTPS URL没有帮助。
请保留这些密钥,但如果您想要使用它们,您需要将现有的SSH密钥添加到您的GitHub账户中
 cd /path/to/your/repo
 git remote set-url origin git@github.com:junaidbinsarfraz/repo.git
 git push

其次,关于证书错误,请尝试使用简化的CMD从此处推送,使用最新的Git for Windows,并且路径要引用最新版本的Git for Windows。为此,请将PortableGit-2.16.1-64-bit.7z.exe解压到任何位置即可。

1
感谢您的及时回答,我尝试了您的解决方案,但是出现了“Permission denied (publickey) fatal: Could not read from remote repository”错误。因此,我禁用了git的ssl验证。 - Junaid
1
@Junaid 这是你自己的代码库吗?你已经将公共 SSH 密钥注册到你的 GitHub 账户了吗? - VonC
1
是的,这是我的自己的存储库。我有很多其他的存储库,但我从未在我的Github帐户上生成过任何ssh密钥。 - Junaid
2
@Junaid 然后将您的公钥添加到GitHub帐户中,我的答案就可以正常工作了:https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/。只需使用没有密码的SSH密钥即可避免对ssh-agent的麻烦。 - VonC
1
@Junaid 是的,只要你在第一次 git push 时输入你的用户名/GitHub 密码。如果 GitHub 没有要求输入密码,那么这意味着它们已经被凭据管理器缓存了:https://dev59.com/jqjja4cB1Zd3GeqP_XmW#48466698 - VonC
显示剩余2条评论

2
在 openSUSE 15.2 WSL(Windows Subsystem for Linux)中,我通过以下方式解决了这个错误:
sudo update-ca-certificates 
sudo mkdir -p /etc/pki/tls/certs/
sudo cp /etc/ssl/ca-bundle.pem /etc/pki/tls/certs/ca-bundle.crt  

"

/etc/pki/tls/certs/ca-bundle.crt是错误中提到的证书文件。我注意到这个文件已经丢失了。 在我的情况下,完整的错误信息如下:

"
fatal: unable to access 'https://github.com/vim/vim.git/': error setting certificate verify locations:
  CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none

1
考虑使用 git config --global http.sslcainfo <路径> - Sergei Krivonos

1

对于Windows系统,我发现在使用GitHub桌面版成功克隆后出现了相同的错误。 当我尝试使用Visual Studio进行同步时,错误就出现了。

我的GitHub桌面版是64位的,但它的git文件夹被放置在Program (x86)文件夹中(为什么呢?) VS也是一个64位应用程序,但它的证书更自然地放在Program文件夹中。

解决方案: 我将 C:\Program Files (x86)\Git\mingw32\ssl 的内容复制到 C:\Program Files\Git\mingw64\ssl

这样,VS的Git就完美地工作了。


0

修复

git config --global --replace-all http.sslcainfo "E:\Program Files\Git\usr\ssl\certs\ca-bundle.crt"

4
您的答案可以通过提供更多支持性信息来改进。请编辑并添加更多细节,比如引用或文献资料,以便其他人可以确认您的答案是正确的。关于如何编写好的答案,您可以在帮助中心找到更多信息。 - Community

-1
我的一个团队成员来到我的座位,报告了这个错误,我发现系统上没有安装git,这就是他遇到这个错误的原因。
虽然微软建议安装Git for Windows,但你不必为Visual Studio 2013或2017安装它,因为同一页最后写道:
“Visual Studio提供了一个非常好的开箱即用的Git体验,无需任何额外的工具。在我们的Visual Studio Git教程中了解更多。”
Git作为Visual Studio 2019的可选组件出现,您需要手动安装它才能与Git服务器(如Team Foundation Services、GitHub和BitBucket)一起使用。您可以在此处找到更多详细信息。

2
如果系统上没有安装Git,则不会出现此错误。这是来自Git的错误。 - eis
1
如果没有安装git,当您尝试git push时会出现“命令未识别”的错误提示。 - pabrams

-1
检查是否安装了git。git --version
安装git。

-2
解决方案:
git config --global http.sslverify "false"

这个命令,然后你通常的git clone "url"操作。

这可能会在将来拉取/推送安全存储库时造成麻烦。因此,禁用需自行承担风险。


11
将安全存储库拉取/推送会在未来引起麻烦,因此永远不要禁用SSL检查。 - Junaid
13
重要提示:针对可能遇到这个问题的其他读者,请注意:绝不要禁用SSL检查。 - Junaid
1
你可以在特定的项目中本地运行它,但不能全局运行。 - Bellash
3
这只是一个不安全的解决方法,而不是一个解决方案。 - TRiG

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