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

我试图使用 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

我做错了什么?

201557 次浏览

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

This will result in changes to [git-install-dir]/etc/gitconfig file, which may be edited directly, too.

(Original solutions found at http://github.com/blog/642-smart-http-support)

以下命令

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

满足了我的需求,但我猜你想要的不仅仅是只读访问,对吧?

如果您正在使用 Cygwin,则可以使用以下命令安装 证书Apt-cyg :

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

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

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

这样就行了,你不需要给出完整路径。

我遇到了这个当 git 拉。对于我的编辑的全局 git 配置文件,修正了这个问题。

进入你的主文件夹,打开.gitconfig 文件。通常是 C: Users.gitconfig

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

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

在那里你必须给出你自己的 git 安装路径。

然后 Git 克隆/拉它将工作。

如果你用 MSYS2..。

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

32位

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

64位

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

在 Linux 上,我有这个错误,通过运行 sudo update-ca-certificates修复了它。

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

如果你编辑你的 curl-ca-bundle。你得弄清楚你的线尾。对于 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

您可以使用记事本 + + 将行结尾转换为 Linux (linefeed)。

这对我很有用(我使用的是 Manjaro linux):

$ 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(-)

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

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

配置 Git 路径:

Git config —— system http.sslcainfo“ D: Program 文件 Git mingw64 ssl certs ca-bundle. crt”

再试一次

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

解决了: 我在安装 Git Windows Installer 更新时出现了这个错误。实际情况是,我没有使用管理员权限安装它,所以 Git 被安装在“ C: Users my _ name AppData Local Programs”中,而不是“ C: program Files”中。重新安装 Git 作为管理员允许把它放在 C: 程序文件和一切都很好!

我用以下命令解决了这个问题。

Git config —— system http.sslvalidfalse

如果你使用的是 Git 命令外壳,它与 GitHub for Windows 应用程序一起安装,那么这个问题和其他各种问题可能在更新后显示出来。只要启动 Git Hub 窗口应用程序,然后再次关闭它。然后 shell 将再次工作正常。问题是在运行 Windows 应用程序之前更新不会完成。仅仅在其上使用 shell 不会触发完成更新。

我在我的 Windows Github 上看到过这个。

我建议卸载用于 Windows 的 Github 并重新安装它。

在此之前,我尝试了几种方法都没有成功,但是这个解决方案对我很有效!

我发现了一个很好的解决 在 RHEL/CentOS 6上添加/更新 CA 证书的根本原因报告的问题。

因为这些发行版已经过时了,所以该系统中的 Cacert 权限直到执行命令 sudo yum update之后才更新。

直到 GIT _ CURL _ VERBOSE 模式显示 Cacert 路径问题时才意识到这个问题。

对我来说,解决这个问题的方法是在我的 Windows 10框中,我尝试卸载 Git 并重新安装,默认使用 Windows Cmd 而不是 Git Bash

打开 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
git config --global http.sslverify "false"

就能解决问题。 然后弹出窗口显示输入用户名和密码

我收到这个错误后移动 git 在硬盘驱动器。删除和重新安装在新的位置固定的东西

如果其他人在 Git for Windows 中遇到这个问题,并且在重新安装之后你的系统上仍然没有 curl-ca-bundle.crt,下面是我所遵循的过程:

  1. 在这里下载 curl 的最新版本: Curl 下载镜像
  2. 在命令行中提取并导航到 curl-**.**.*/lib
  3. 运行 ./mk-ca-bundle.prl
  4. ca-bundle.crt复制到您的 git 路径,并按照其他答案中列出的方式更新配置

这个要点大喊,感谢它帮我完成了安装。

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

对我来说非常有效:)

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

视窗64位中对我有效的解决方案如下

Git config —— system http.sslvalidfalse

在我的 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>中使用了 config

因此,我用记事本改变了第二个 .gitconfig和 git 终于采取了正确的配置,并得到了工作。

对于 Windows 10的 明吉特用户 :

你得稍微调整一下 @ mstrap 的回答

git config --system http.sslcainfo "<PATH-TO-MINGIT>\mingw64\ssl\certs\ca-bundle.crt"

我在更新到 Visual Studio 201916.10.2(从16.10.0开始)后遇到了这个错误,而之前的 Git 工作正常。

我没有单独安装 Git (或者换句话说,我只是将 Git 作为 VisualStudio 的一部分使用)

我通过将文件 "ca-bundle.crt"定位到 "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\mingw32\ssl\certs\ca-bundle.crt"解决了这个问题,然后将它复制到指示无法在 "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"找到它的文件夹。

请注意,我必须创建“ mingw64sslcerts”目录,因为它们以前不存在。

在那里复制文件之后,Git 可以立即再次同步,而无需重新启动 VisualStudio。

在我的例子中,解决问题的方法是将 openssl 改为 schannel:

之前

PS E:\www\XXXXX> git config --global http.sslverify "true"
PS E:\www\XXXXX> git pull origin main --force
fatal: unable to access 'https://gitlab.com/XXXXXXXXX.git/': error setting certificate verify
locations: CAfile: C:\Program Files\Git\mingw64\ssl\certs CApath: C:\Program Files\Git\mingw64\ssl\certs

解决方案

PS E:\www\XXXXX> git config --global http.sslbackend schannel

之后

PS E:\www\XXXXX> git config --global http.sslverify "true"


PS E:\www\XXXXX> git pull origin main --force


From https://gitlab.com/XXXXXXXXX
* branch main -> FETCH_HEAD
Already up to date.

在 C: Program Files Git etc gitconfig 中应该是这样的

[http]
sslBackend = schannel
sslcainfo = C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt