Github:克隆我的私有存储库时出错


155

我正在尝试使用https-URL克隆我的GitHub项目,但是失败并出现错误:

$ git clone https://foo@github.com/foo/foo-private.git
Cloning into foo-private...
Password:
error: error setting certificate verify locations:
  CAfile: /bin/curl-ca-bundle.crt
  CApath: none
 while accessing https://foo@github.com/foo/foo-private.git/info/refs

fatal: HTTP request failed

我究竟做错了什么?

Answers:


289

我已经在Windows上使用msysgit 1.7.2.3。看到了这一点。您必须将路径修复为bin / curl-ca-bundle.crt。我必须使用反斜杠指定绝对路径:

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

或-不太建议-您可以选择执行以下步骤完全关闭SSL检查:

git config --system http.sslverify否

对于这两种情况,这都会导致对[git-install-dir] / etc / gitconfig文件的更改,也可以直接对其进行编辑。

(原始解决方案位于http://github.com/blog/642-smart-http-support


1
就我而言,我需要为Windows使用目录定界符,我的意思是,我必须使用“ \”(windows)而不是“ /”(unix)来分隔路径中的目录。
维克多

如以下原始文章对我有用,请在公共存储库上进行尝试:$ git clone github.com/schacon/grack.git对于私有存储库,或要在存储库中具有推送访问权限,可以采用以下方式进行克隆:$ git clone username@github.com/username/project.git 谢谢:)
J4cK '16

13
对于未来的参照路似乎已经改变了我“C:\ Program Files文件(x86)的\的Git \ mingw32的\ SSL \证书\ CA-bundle.crt”
本·

3
我的64位计算机上的路径是“ C:\ Program Files \ Git \ mingw64 \ ssl \ certs \ ca-bundle.crt”
Kamaraju Kusumanchi,

3
在我的64位计算机上,git config --global http.sslcainfo "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"可以正常工作的原因无法说明为什么在系统出现故障时全局运行。
semako

76

我解决了从以下 位置安装Git的问题:https : //git-for-windows.github.io/找到cert文件路径:

D:\ Program Files \ Git \ mingw64 \ ssl \ certs \ ca-bundle.crt

配置Git路径:

git config --system http.sslcainfo“ D:\ Program Files \ Git \ mingw64 \ ssl \ certs \ ca-bundle.crt”

再试一次


13
我知道了error: could not lock config file C:\Program Files\Git\mingw64/etc/gitconfig: Permission denied。然"C:\Program Files\Git\git-bash.exe"以管理员身份,并试图再次和它的工作。谢谢!
AXO 2015年

更好的解释
Kasim Rangwala

2
我刚刚安装了适用于Windows 2.13.2的Git,尝试将其推送到遥控器时遇到了此问题。我发现证书文件位于类似的位置:C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt
Simon Tewsi

1
这对我
有用

我在安装期间已在指定目录上安装了GIT,因此我必须根据该安装指定正确的MINGW64路径
gargkshitiz

21

如果您使用MSYS2 ...

只需使用以下命令安装证书包:

32位

pacman -S mingw-w64-i686-ca-certificates ca-certificates

64位

pacman -S mingw-w64-x86_64-ca-certificates ca-certificates

1
加一。谢谢。别忘了必须这样做32位msys2,但是情况可能有所不同。
bvj

1
谢谢,我确认这是使用msys2 64位来完成的事情:-D
FabienRohrer

1
它可能会出现/usr/ssl/certs/ca-bundle.crt文件为空,只需再次重新安装ca证书
Daniel YC Lin

不适用于Windows:$ pacman -S mingw-w64-x86_64-ca-certificates ca-certificates bash:pacman:找不到命令
belgoros

@Javix这就是为什么它说“如果您使用MSYS2”的原因。pacman命令在Windows上默认情况下不可用,但是如果您已安装MSYS2,则该命令可用。
CoolOppo

12

如果您使用的是Cygwin,则可以使用apt-cyg安装ca-certificates软件包 :

wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /usr/local/bin
apt-cyg install ca-certificates

如何从命令行安装cygwin软件包?


1
该死的。我搜索了很长时间。这在Mac上也可以解决。感谢你的分享。
Phlow

1
在Cygwin它为我工作git config --system http.sslcainfo /usr/ssl/certs/ca-bundle.crt
ATorras

9
git config --global http.sslverify "false" 

将解决问题。之后会出现一个弹出窗口,输入您的用户名和密码


5
您可能要提及此方面的安全后果。这似乎是一个可怕的想法,特别是在全球范围内。
C. Helling

为我
效力

6

已解决:我在对Git Windows安装程序安装更新时收到此错误。发生的是,我没有使用管理员权限进行安装,因此Git安装在“ C:\ Users \ my_name \ AppData \ Local \ Programs”中,而不是“ C:\ program Files”中。以管理员允许的身份重新安装Git,然后将其放入C:\ program Files,一切恢复正常!


值得一提的是,尽管它仍然使用AppData文件夹,但卸载并重新安装GitHub Desktop也为我解决了此问题。
Ben Collier

5

这对我有用(我正在使用Manjaro linux)。我运行cmd来查看ca证书:

$ curl-config --ca
**/etc/ssl/certs/ca-certificates.crt**

但是实际上我在路径中找到了证书:

**/etc/ca-certificates/extracted/ca-bundle.trust.crt**

然后将配置添加到〜/ .gitconfig(如果不存在,请创建它):

**vim ~/.gitconfig**
[http]
    sslVerify = true
    sslCAinfo = /etc/ca-certificates/extracted/ca-bundle.trust.crt

[user]
    email = <email of github account>
    name = <username of github account>

有用!

.rbenv]$ git pull

remote: Counting objects: 70, done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 70 (delta 39), reused 12 (delta 12), pack-reused 6
Unpacking objects: 100% (70/70), done.
From https://github.com/sstephenson/rbenv
   c43928a..efb187f  master     -> origin/master
 + 37ec781...7e57b52 user-gems  -> origin/user-gems  (forced update)
Updating c43928a..efb187f
Fast-forward
 libexec/rbenv-init         |  4 ++--
 libexec/rbenv-version-file |  1 +
 test/init.bats             |  2 +-
 test/test_helper.bash      | 25 +++++++++++++++----------
 4 files changed, 19 insertions(+), 13 deletions(-)

1
在archlinux上为我工作!
lucasem '16

4

git config --system http.sslcainfo /bin/curl-ca-bundle.crt

这可行。您不必给出完整的路径。


3

我在git pull时遇到了这个问题。为我编辑了解决问题的全局git配置文件。

转到您的主文件夹并打开.gitconfig文件。通常是C:\ Users \ .gitconfig

如果文件不存在,请创建它

[http]
sslcainfo = E:\ systools \ git-1.8.5.2 \ bin \ curl-ca-bundle.crt

在那里,您必须提供自己的git安装路径。我在这里使用了便携式版本的git。

然后git clone / pull它会工作。


1
您需要使用双转义字符:E:\\systools...
HappyCactus

但是,请确保不要将路径用引号引起来。超级反直觉。 "C:\\folder\\file"不好,C:\\folder\\file很好。我想要我的时光倒流。
increddibelly

2

如果您正在使用随GitHub for Windows应用程序一起安装的Git命令外壳,则更新后可能会显示此问题和其他各种问题。只需启动Git Hub Windows应用程序,然后再次将其关闭即可。然后外壳将再次正常运行。问题在于,直到Windows应用程序运行,更新才能完成。仅在其外壳上使用外壳不会触发更新完成。


2

我已经在Windows的Github上看到了这一点。

我建议卸载适用于Windows的Github,然后重新安装。

在此之前,我尝试了几种方法但均未成功,但是此解决方案对我有用!


1

在使用msysgit的Windows上,出现此错误,原因是我添加了公司代理证书。

如果您编辑curl-ca-bundle.crt,则必须确定行距。如果使用curl-ca-bundle,则必须使用Linux样式的行尾。

> git ls-remote --tags --heads https://github.com/oblador/angular-scroll.git
fatal: unable to access 'https://github.com/oblador/angular-scroll.git/': error setting certificate verify locations:
  CAfile: C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt
  CApath: none

您可以使用notepad ++将换行符转换为Linux(换行符)。


1

另外,如果尝试使用git的用户与安装git的用户不同,则在Windows中可能会发生此问题。该错误可能表明git无法访问证书文件。以管理员身份安装git并使用@rogertoday的答案解决了我的问题。


1

我找到了在RHEL / CentOS 6上添加/更新CA证书的好方法,这是报告的根本原因。

由于它们已成为过时的发行版,因此在执行命令之前,该系统中的证书颁发机构尚未更新sudo yum update

直到GIT_CURL_VERBOSE模式显示cacert路径问题,才意识到问题。


0

在Linux上,我发生了此错误,并通过运行进行了修复sudo update-ca-certificates


您应该解释此命令的作用以及为什么会有帮助。不加说明地发布原始命令不是一个好主意,特别是在您需要root访问权限的情况下。
花生2015年

0

对我来说,解决此问题的方法是在Windows 10盒中,尝试使用Windows Cmd作为默认而不是Git Bash卸载git和resintalling

打开CMD并运行以下命令

//Once installed try to resintall the bin folder 
git config --system http.sslcainfo \bin/curl-ca-bundle.crt

//disable ssl verification
git config --global http.sslverify "false"

//Then try to clone repo again
git clone git@github.com:account/someproject.git

0

如果其他任何人在Git for Windows中都面临此问题,并且curl-ca-bundle.crt即使重新安装后系统上也没有任何位置,这是我遵循的过程:

  1. 在此处下载 curl的最新版本:curl下载mirror
  2. 提取并导航至curl-**.**.*/lib命令行
  3. ./mk-ca-bundle.prl
  4. 复制ca-bundle.crt到您的git路径并更新其他答案中列出的配置

这个要旨大声疾呼,以帮助我完成安装。


0

我已经通过重新安装Windows Server 2016并在“选择HTTPS传输后端”安装步骤中选择“本地Windows安全通道库”来解决此问题。



0

以win10为例,我有两个版本.gitconfig

  • 第一个在 C:\Program Files\Git\etc
  • 第二个在 C:\Users\<user>

命令

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

确实对进行了更改C:\Program Files\Git\etc,但是git以某种方式在C:\Users\<user>

因此,使用记事本我更改了第二个记事本,.gitconfig而git最终进行了正确的配置并开始工作。


-1

我可以使用以下命令解决此问题。

git config --system http.sslverify否


如果它讨论此设置的安全影响并提供其他解决问题的方法,则此答案会更好。虽然,当前接受的答案可以做到这一点以及更多...
chwarr '17

-1

在跨硬盘驱动器移动git后收到此错误。在新位置删除并重新安装固定的东西


-1

在Windows版git上,您还可以重新安装并选择Windows本机证书验证方法(默认为OpenSSL)。这将跳过OpenSSL验证,而是使用Windows本机验证,该验证不需要维护单独的工具(OpenSSL)和证书。

为我完美地工作:)


-2

以下命令

git clone git://github.com/username/projectname.git

可以满足我的需求,但是我想您需要的不仅仅是只读访问,对吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.