无法在git代码库中拉取/推送

48
$ git pull origin master
fatal: unable to access 'https://xxxxxxxxxxxxxxx': 
      error setting certificate verify locations:
CAfile: C:/Users/abc/AppData/Local/Programs/Git/usr/bin/curl-ca-bundle.crt
CApath: none

当我拉取或推送我的代码时,我遇到了这个错误。

请指导我如何解决它。


C:/Users/abc/AppData/Local/Programs/Git/usr/bin/curl-ca-bundle.crt 文件存在吗? - Anthony Raymond
可能是重复的问题:Github:克隆我的私有存储库时出错 - Anthony Raymond
@Anthony - 不好意思,我刚刚检查了一下,它不在那里。谢谢你的快速回复。 - Arvind
@Arvind_Kapse 没问题 ;) - Anthony Raymond
23个回答

48

使用 https 时,您需要提供密码或使用证书。在您的情况下,似乎该证书无效。

尝试通过告诉 git 在哪里查找证书来解决此问题:

// Add the certificate to your configuration file
git config --system http.sslcainfo "C:\Program Files (x86)\git\bin\curl-ca-bundle.crt"

或者,您可以禁用 SSL 检查:

// or switch off SSL checks completely by executing:
git config --system http.sslverify false

将此设置到您的配置文件中,仅针对给定的URL禁用它,而不是所有请求。

[http "https://weak.example.com"]
    sslVerify = false

http.sslVerify

是否在通过 HTTPS 获取或推送时验证 SSL 证书。


http.sslCAInfo

包含证书的文件,用于在通过 HTTPS 获取或推送时验证对等方。


14
不建议禁用 sslVerify - Anthony Raymond
1
同意,您也可以针对特定的url禁用它。 - CodeWizard
2
会更聪明的解决方案^^,我不知道那个,谢谢@codeWizard - Anthony Raymond
2
对于任何阅读此帖子的人,如果您可以提供正确的证书给git,您不需要禁用https检查。只需运行第一个命令指向ca-bundle.crt文件即可解决问题。如果还是无法解决,则尝试禁用SSL检查。 :) - jamesmortensen
6
我在 git 版本 2.12.2.windows.1 中使用了以下命令:git config --system http.sslcainfo "c:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt" - Kevin Smyth
显示剩余2条评论

27

我曾经遇到过同样的问题。我的问题是在重新安装Windows版Git后出现的。我正在使用Windows 10上的64位Git。

我发现安装程序并没有再把Git安装在C:/Users/[USER_NAME]/AppData/Local/Programs/Git目录下,而是安装到了C:\Program Files\Git目录下。

然而,安装程序没有编辑旧的配置文件C:\ProgramData\Git\config。这个文件仍然包含旧的路径,因此我手动编辑了它。

例如,在我的系统上,我使用了以下内容:

[http]
     sslCAInfo = C:/Programme/Git/mingw64/ssl/certs/ca-bundle.crt

也许你将不得不使用Program Files代替

     sslCAInfo = C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt

编辑

DS在评论中所说

C:\ProgramData\Git\config需要以管理员身份编辑

例如,右键单击记事本并选择"以管理员身份运行"然后打开文件。


1
在其他语言环境的系统上,请使用以下内容: [http] sslCAInfo = C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt - Luis Cantero
2
正是我所遇到的问题。还有一点需要注意:需要以管理员身份编辑 C:\ProgramData\Git\config。 - DS.
我在Windows 10上遇到了类似的问题。 "npm install"没有读取与“git”相同的配置文件,似乎它正在使用C:\ ProgramData \ Git \ config位置。因此,必须修改该文件以添加以下内容(解决方法)[http] sslVerify = false - Florin D

26
我在Windows上使用gitbash运行git时也遇到了这个问题。我只是重新安装了gitbash,然后gitbash自动管理了git证书及其所需的路径。

看起来很正常。这个解决方案在我的情况下有效。这是在我折腾 Git-via-SSH 的事情后发生的。 - Aloha
2
你如何单独安装Git Bash? - gath
@gath 我也在寻找同样的东西。 - Abel Jojo

14
在Git-Bash 2.x版本中,.crt文件的路径已更改为../Git/mingw64/ssl/certs/ca-bundle.crt。我不得不在Git-Bash中手动更新它。
 git config --global http.sslcainfo "/path/to/Git/mingw64/ssl/certs/ca-bundle.crt"

已经为我解决了。我进行了VS2019更新(LiveShare和Azure Data Lakes),然后出现了问题,但可能是巧合,无法证明是那个原因导致的。供参考,这是我的错误信息: Pushing feature/test Error encountered while pushing branch to the remote repository: Git failed with a fatal error. unable to access 'https://mydomain.visualstudio.com/myproject/_git/myrepo/': error setting certificate verify locations: CAfile: c:/program files (x86)/microsoft visual studio/2019/community/common7/ide/commonextensions/microsoft/teamfoundation/team explorer/Git/mingw32/bin/curl-ca-bundle.crt CApath: none - Karlossus

5

试试这个

git config --system http.sslcainfo "C:\Program Files (x86)\git\bin\curl-ca-bundle.crt"

或者

通过运行以下命令关闭SSL

git config --system http.sslverify false

4
不建议禁用 sslVerify - Anthony Raymond
是的,我同意。这只是临时解决方案,用于调试@AnthonyRaymond :) - Prabu Guna

5

如果git客户端无法找到受信任的ssl证书机构,则可能会出现此问题。如果您使用的是Windows系统,请尝试从https://gitforwindows.org/重新安装。

在安装过程中,选择“使用本地Windows安全通道库”选项。该选项将允许您使用公司内部的根CA证书而不是默认的ca-bundle.crt。

输入图像描述


4
 git config --global http.sslverify "false" 
  • 解决问题后,弹出窗口让您输入用户名和密码,请确保有效。

2
如果您的git版本是2.8.1.windows.1,这可能会对您有所帮助。首先,您需要找到您的git主目录,我的是D:\SDK\Git。在相同的目录下,您可以找到文件夹"usr",打开它并进入\ssl\certs,您可以找到证书:ca-bundle.crt。
然后打开控制台,执行:
git config --system http.sslcainfo "D:\SDK\Git\usr\ssl\certscabundle.crt"

2

在cygwin安装devel包后,我遇到了这个问题。

我尝试了这个帖子中的所有修复方法,但都没有效果。

然后,我遇到了github上的这个帖子

我找到了gitconfig中指定CAPATH的位置,并删除了https规范,问题得到了解决。

Original Answer翻译成"最初的回答"


2

这些步骤可以在从GIT 2.x客户端迁移到2.5.x时完成:

似乎在安装新版本的GIT客户端后,它会更改查找证书的路径,例如:

C:\Program Files\Git\mingw64

变成像这样:

C:\Program Files\Git\mingw64\libexec

为了解决这个问题,只需将“ssl”文件夹复制到新位置,它就可以像魔法一样工作!

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