【问题标题】:Unable to pull/push in git repository无法在 git 存储库中拉/推
【发布时间】:2016-04-03 06:38:20
【问题描述】:
$ 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 - 不,我只是检查了一下它不存在。感谢您的快速回复
  • @Arvind_Kapse 没问题 ;)

标签: git github-for-windows


【解决方案1】:

使用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 获取或推送时验证对等方

【讨论】:

  • 不建议禁用sslVerify
  • 同意,您也可以为特定网址禁用每个网址
  • 会是非常聪明的解决方案^^,我不知道,谢谢@codeWizard
  • 对于任何来这篇文章的人,如果你可以为 git 提供正确的证书,你不需要禁用 https 检查。只需运行第一个命令以指向 ca-bundle.crt 文件就足以解决问题。如果没有,请尝试禁用 SSL 检查。 :)
  • 我将这个用于 git 版本 2.12.2.windows.1:git config --system http.sslcainfo "c:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"
【解决方案2】:

试试这个

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

通过运行此命令关闭 SSL

git config --system http.sslverify false

【讨论】:

  • 不建议禁用sslVerify
  • 是的,我同意。它的临时解决方案@AnthonyRaymond 用于调试:)
【解决方案3】:

我曾经遇到过同样的问题。重新安装 git for windows 后出现我的问题。我在 Windows 10 上将 git 用于 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",然后打开文件。

【讨论】:

  • 在具有其他语言环境的系统上,使用:[http] sslCAInfo = C:\\Program Files\\Git\\mingw64\\ssl\\certs\\ca-bundle.crt
  • 正是发生在我身上的事情。再注意一点:C:\ProgramData\Git\config 需要以管理员身份编辑。
  • Windows 10 中对我来说类似的问题。“npm install”没有读取与“git”相同的配置文件,似乎它正在使用 C:\ProgramData\Git\config 位置。因此必须修改该文件以将其添加到其中(解决方法)[http] sslVerify = false
【解决方案4】:

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

【讨论】:

  • 似乎合法。该解决方案适用于我的情况。在搞砸了 Git-via-SSH 的东西之后,这发生在我身上。
  • 如何单独安装gitbash?
  • @gath 我也在找。
【解决方案5】:

在 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 数据湖),然后它坏了,但可能是巧合,不能证明是这样。作为参考,这是我的错误:将分支推送到远程存储库时遇到推送功能/测试错误:Git 失败并出现致命错误。无法访问“mydomain.visualstudio.com/myproject/_git/myrepo”:错误设置证书验证位置: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: 无
【解决方案6】:

使用 Intellij 和 git-sdk-64,最初选择 git-sdk-64\mingw64\bin\git.exe 是为了解决这个问题,然后当切换到 git-sdk-64\cmd\git.exe 时,它只发现了证书文件的位置,不需要其他配置。 (没用过git config --global http.sslcainfo ...

【讨论】:

    【解决方案7】:

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

    原因似乎是证书文件夹的组所有者已损坏。 有点激进的解决方案是删除/etc/group,结果cygwin可以直接向windows询问组权限。

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

    【讨论】:

    • 我想保留 /etc/passwd,因为与 windows 相比,我使用了不同的 cygwin 用户名。解决方法是临时重命名 /etc/passwd 并重新启动 cygwin(X 服务器)。
    【解决方案8】:

    我发现以下步骤有助于最终解决 Windows 10 的问题:

    正在卸载 git。

    但是,git 卸载程序并没有做干净的工作。所以你可能需要去删除 C:\Users[My name]\AppData\Local\Programs\ 的 Git 目录

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

    【讨论】:

      【解决方案9】:

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

      C:\Program Files\Git

      就是这样

      【讨论】:

        【解决方案10】:

        我收到了同样的错误消息,但在我的情况下,这是因为我将 github 设置更改为使用 ssh 而不是 https。

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

        $git remote remove origin
        $git remote add origin git@github.com:UserName/repo.git
        

        那么git remote show origin 正确显示遥控器。

        【讨论】:

        • 这个答案实际上有帮助,应该是公认的答案。它实际上是一个更简单、更安全的步骤序列。请勿通过git config --system http.sslverify false 禁用 SSL,因为 SSL 是一种加密软件,可确保您的连接和您的代码在传输过程中安全。使用我评论上方的答案以获得真正的帮助。
        【解决方案11】:

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

        【讨论】:

          【解决方案12】:

          我在以下位置找到了 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"
          

          【讨论】:

            【解决方案13】:

            如果您的 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"

            【讨论】:

              【解决方案14】:

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

              【讨论】:

                【解决方案15】:
                 git config --global http.sslverify "false" 
                
                • 将解决问题 之后弹出窗口出现输入您的用户名和密码 确保有效。

                【讨论】:

                  【解决方案16】:

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

                  看起来在安装新版本的 GIT 客户端后,它会更改查找证书的路径,如下所示:

                  C:\Program Files\Git\mingw64
                  

                  到这样的事情:

                  C:\Program Files\Git\mingw64\libexec
                  

                  要解决这个问题,只需将“ssl”文件夹复制到新位置,它就会像魅力一样工作!

                  【讨论】:

                    【解决方案17】:

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

                    【讨论】:

                      【解决方案18】:

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

                      【讨论】:

                      • 答案对我来说是最好的。
                      【解决方案19】:

                      当前 Git for Windows 构建 (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 凭证,它将无法克隆/推送/拉取并出现拒绝访问错误,而不是提示输入不同的凭证。

                      【讨论】:

                        【解决方案20】:

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

                        我尝试了此线程中的所有修复,但没有任何效果。

                        然后,我遇到了this thread on github

                        我找到了在 gitconfig 中指定 CAPATH 的位置,我删除了那个 https 规范,它解决了我的问题。

                        【讨论】:

                          【解决方案21】:

                          这个帖子有很多盲目的答案。 我只是这里的另一个盲人,但我遇到了同样的问题并通过关注this easy article 解决了它。据我了解原始问题,git 正在尝试查找 SSL 证书文件以使用 HTTPS 协议,但未能找到该文件。这里的大多数答案似乎都集中在“好吧,然后禁用 SSL”,而不是正确替换文件。

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

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

                          如果你用你的 git 配置(就像我做的那样)搞砸了并且需要将它设置回来,应该这样做:

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

                          另一个可能会影响许多阅读此线程的人的旁注:证书文件的预期位置取决于您正在运行的 git 可执行文件。由于我们谈论的是 Cygwin,所以我们中的一些人(大多数?)可能也安装了 Windows 原生风格的 git。如果您的 Cygwin 路径设置为查找 Windows git 可执行文件,则您的里程可能会因指向 http.sslcainfo 配置的位置而有所不同。要检查哪个可执行文件正在为您提取:

                          $ which git
                          

                          【讨论】:

                            【解决方案22】:

                            我之前安装了 git,后来卸载了。

                            所以对我来说就像 重新安装正确版本的 git(对我来说是 x64)一样简单

                            https://git-scm.com/download/win

                            【讨论】:

                              【解决方案23】:

                              当 git 客户端无法为 ssl 找到受信任的 CA 时,可能会出现此问题。如果您在 Windows 中,请尝试从 https://gitforwindows.org/ 重新安装。

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

                              【讨论】:

                                猜你喜欢
                                • 2011-03-14
                                • 1970-01-01
                                • 2014-03-15
                                • 1970-01-01
                                • 2018-06-24
                                • 2013-07-04
                                • 2010-10-25
                                相关资源
                                最近更新 更多