无法拉/推git存储库

问题描述 投票:43回答:21
$ 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

当我拉或推我的代码时,我收到此错误。

请指导我解决这个问题。

git github-for-windows
21个回答
23
投票

我也在Windows中遇到这个问题并使用gitbash运行git。我刚刚重新安装了gitbash,而gitbash自动管理了git证书及其所需的路径。


1
投票

安装Windows 10后,我在最新的cygwin更新后遇到了同样的问题。命令update-ca-trust在安装过程中失败。

原因似乎是证书文件夹的组所有者已损坏。有点激烈的解决方案是删除/etc/group,事实证明cygwin能够直接向windows询问有关群组权利的问题。

http://zaunerc.blogspot.se/2016/01/cygwin-mapping-windows-sids-to-posix.html找到解决方案


1
投票

我在以下地址找到了ssl证书:

C:\Users\[USERNAME]\AppData\Local\GitHub\PortableGit_[portable code]\usr\ssl\certs

然后你可以按照CodeWizard的解决方案,即:

// Add the certificate to your configuration file
git config --system http.sslcainfo "[LOCATION_SPECIFIED_ABOVE]/cabundle.crt"

1
投票

当前用于Windows版本的Git(2.18.0.windows.1)有一个错误 - 如果没有设置http.sslcainfo,它希望在C:/Program Files/Git/mingw64/libexec/ssl/certs/ca-bundle.crt中找到证书存储。

证书存储实际安装到C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt,以便修复您必须指定正确的路径。

此外,SCHANNEL实现也在此版本中被破坏。

最后,Git凭证管理器也被破坏了,因为如果你有从gitlab-runner安装存储的CI / CO凭证,它将无法克隆/推送/拉取访问被拒绝错误,而不是提示输入不同的凭据。


1
投票

对于未来的读者:

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

我尝试了这个线程中的所有修复,但没有任何工作

然后,我遇到了this thread on github

我做了什么,我发现在gitconfig中指定了CAPATH,我删除了https规范,它解决了我的问题。


0
投票

使用Intellij和git-sdk-64,并首先选择git-sdk-64\mingw64\bin\git.exe来解决这个问题,然后当切换到git-sdk-64\cmd\git.exe时,它单独计算了cert文件位置,并且不需要其他配置。 (还没用过git config --global http.sslcainfo ...


0
投票

我发现以下步骤对于解决Windows 10的问题非常有用:

卸载git。

但是,git卸载程序不能完成干净的工作。所以你可能需要删除C:\ Users [我的名字] \ AppData \ Local \ Programs \下的Git目录

在此之后,全新安装的git应该安装在配置文件所指向的C:\ Program Files \ Git目录中,以便读取ssl证书。


0
投票

我有同样的错误,我修复了它在默认路径中重新安装git:

C:\ Program Files \ Git

就这样


0
投票

我有相同的错误消息,但在我的情况下,这是因为我已经更改github设置使用ssh而不是https。

在删除远程并使用ssh重新添加它之后,使用https克隆了存在问题的存储库,它正在按预期工作。

$git remote remove origin
$git remote add origin [email protected]:UserName/repo.git

然后git remote show origin正确显示遥控器。


0
投票

我在Windows 7中遇到了同样的错误。发现错误中引用的证书路径不存在。而不是...... \ mingw32 \ usr \ ssl ...证书文件在... \ mingw2 \ ssl ...所以我手动创建了一个usr文件夹并将整个ssl树移动到usr中。这解决了这个问题。


0
投票

感谢https://github.com/npm/npm/issues/1484 git config --global http.sslverify "false"将解决问题


47
投票

使用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时验证对等方


0
投票

我遇到了相同的错误消息,但在克隆github存储库时,遗憾的是设置http.sslcainfo并没有多大帮助。因为我碰巧在公司代理服务器后面,所以设置http.proxy为我修复它。


0
投票

这个帖子是很多盲目领导的盲人答案。我在这里只是一个盲人,但我只是遇到了同样的问题并通过跟随this easy article解决了这个问题。据我所知原来的问题,git试图找到一个SSL证书文件,以便使用HTTPS协议,并且无法找到该文件。这里的大多数答案似乎都集中在“好吧,只是禁用SSL”,而不是正确地替换文件。

这个咒语应该生成cert文件并将其放在cygwin上git的正确位置:

$ curl -sL http://ca.pdinc.us > /etc/pki/ca-trust/source/anchors/ca.pdinc.us.pem \
&& update-ca-trust

如果你使用你的git配置(就像我做的那样)并且需要将它设置为BACK,那么应该这样做:

$ git config --global http.sslcainfo "/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt"

另一个注意事项可能会影响许多阅读此线程的人:cert文件的预期位置取决于您正在运行的git可执行文件。由于我们正在讨论Cygwin,我们中的一些人(大多数?)可能也安装了Windows原生的git风格。如果您的Cygwin路径设置为查找Windows git可执行文件,则您的里程数可能会因http.sslcainfo配置的位置而异。要检查哪些可执行文件已被选中:

$ which git

24
投票

我曾经遇到过同样的问题。重新安装git for windows后出现问题。我在Windows 10上使用git for Windows 64位。

我发现安装程序不再在C:/Users/[USER_NAME]/AppData/Local/Programs/Git中安装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。

例如。右键单击记事本并选择"Run as Administrator"然后打开文件。


12
投票

在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"

5
投票

试试这个

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

要么

运行此命令关闭SSL

git config --system http.sslverify false

5
投票
 git config --global http.sslverify "false" 
  • 在弹出窗口出现输入您的用户名和密码确保有效后,将解决问题。

2
投票

如果您的git版本是2.8.1.windows.1,这可能对您有所帮助。首先,你需要找到你的git主目录,我的是D:\ SDK \ Git.Just在同一目录下,你可以找到文件夹“usr”,打开它并转到\ ssl \ certs,你可以找到证书: CA-bundle.crt。

然后打开控制台,执行: git config --system http.sslcainfo "D:\SDK\Git\usr\ssl\certscabundle.crt"


2
投票

这将在从GIT 2.x客户端迁移到2.5.x时完成工作:

看起来在安装新版本的GIT客户端之后,它会改变它从以下内容查找证书的路径:

C:\Program Files\Git\mingw64

这样的事情:

C:\Program Files\Git\mingw64\libexec

要解决此问题,只需将'ssl'文件夹复制到新位置,它就会像魅力一样!


2
投票

转到你的git目录并将mingw64 / ssl文件夹移动到mingw64 / libexec / ssl

© www.soinside.com 2019 - 2024. All rights reserved.