侧边栏壁纸
  • 累计撰写 90 篇文章
  • 累计创建 95 个标签
  • 累计收到 10 条评论

目 录CONTENT

文章目录

Git问题-克隆仓库时提示找不到证书

汤圆学Java
2022-08-08 / 0 评论 / 0 点赞 / 97 阅读 / 3,340 字
温馨提示:
本文最后更新于 2022-08-08,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

克隆远程项目到本地时,用https协议报错,提示找不到对应的证书文件;

但是git协议正常;

目录

  1. 问题描述
  2. 原因分析
  3. 解决办法

正文

1. 问题描述

克隆远程项目到本地时,用https协议报错,提示找不到对应的证书文件;

报错提示如下:

E:\Project>git clone https://gitee.com/leifengyang/springboot2.git
Cloning into 'springboot2'...
fatal: unable to access 'https://gitee.com/leifengyang/springboot2.git/': error setting certificate verify locations:  CAfile: F:/Jalon/Git/mingw64/ssl/certs/ca-bundle.crt CApath: none

但是用git协议是可以正常克隆的;

2. 原因分析

根据上面的报错提示可以看到,原因是找不到对应的CAfile证书文件,现有的查找路径为F:/Jalon/Git/mingw64/ssl/certs/ca-bundle.crt

而我本地并没有这个路径,可能是之前安装的路径;

后来重新安装换了路径,但是这个配置没有改过来,而是默认引用了旧的配置信息;

3. 解决办法

就是修改对应的配置 ;我们先查看现有的配置,然后将对应的配置修改为新的路径即可

  • 先查看现有的配置:git config --list --show-origin,查看配置的同时,列出配置文件的路径来源
E:\Project>git config --list --show-origin
file:E:/Git/etc/gitconfig       diff.astextplain.textconv=astextplain
file:E:/Git/etc/gitconfig       filter.lfs.clean=git-lfs clean -- %f
file:E:/Git/etc/gitconfig       filter.lfs.smudge=git-lfs smudge -- %f
file:E:/Git/etc/gitconfig       filter.lfs.process=git-lfs filter-process
file:E:/Git/etc/gitconfig       filter.lfs.required=true
file:E:/Git/etc/gitconfig       http.sslbackend=openssl
file:E:/Git/etc/gitconfig       http.sslcainfo=F:/Jalon/Git/mingw64/ssl/certs/ca-bundle.crt
file:E:/Git/etc/gitconfig       core.autocrlf=true
file:E:/Git/etc/gitconfig       core.fscache=true
file:E:/Git/etc/gitconfig       core.symlinks=false
file:E:/Git/etc/gitconfig       credential.helper=manager
file:C:/Users/Administrator/.gitconfig  user.name=jalon
file:C:/Users/Administrator/.gitconfig  core.quotepath=false

可以看到对应的配置http.sslcainfoF:/Jalon/Git/mingw64/ssl/certs/ca-bundle.crt

  • 修改配置:git config --system http.sslcainfo Git安装目录/mingw64/ssl/certs/ca-bundle.crt

因为上面的http.sslcainfo配置路径为E:/Git/etc/gitconfig,这个路径是系统配置,针对所有用户和所有仓库,所以需要通过--system来进行配置;

当然也可以用--global,这样全局配置会覆盖前面的系统配置,只是同一个参数有多个重复配置,后期容易搞混;

关于配置路径,可以参考下面的图:

image-20220726170609970

完整的配置命令如下:

E:\Project>git config --system http.sslcainfo E:/Git/mingw64/ssl/certs/ca-bundle.crt

这里的E:/Git/mingw64/ssl/certs/ca-bundle.crt为现有的Git安装路径;

  • 再次查看配置:
E:\Project>git config --list --show-origin
file:E:/Git/etc/gitconfig       diff.astextplain.textconv=astextplain
file:E:/Git/etc/gitconfig       filter.lfs.clean=git-lfs clean -- %f
file:E:/Git/etc/gitconfig       filter.lfs.smudge=git-lfs smudge -- %f
file:E:/Git/etc/gitconfig       filter.lfs.process=git-lfs filter-process
file:E:/Git/etc/gitconfig       filter.lfs.required=true
file:E:/Git/etc/gitconfig       http.sslbackend=openssl
file:E:/Git/etc/gitconfig       http.sslcainfo=E:/Git/mingw64/ssl/certs/ca-bundle.crt
file:E:/Git/etc/gitconfig       core.autocrlf=true
file:E:/Git/etc/gitconfig       core.fscache=true
file:E:/Git/etc/gitconfig       core.symlinks=false
file:E:/Git/etc/gitconfig       credential.helper=manager
file:C:/Users/Administrator/.gitconfig  user.name=jalon
file:C:/Users/Administrator/.gitconfig  core.quotepath=false

可以看到,对应的配置http.sslcainfo已经改过来了;

  • 最后克隆远程项目:
E:\Project>git clone https://gitee.com/leifengyang/springboot2.git
Cloning into 'springboot2'...
remote: Enumerating objects: 612, done.
remote: Total 612 (delta 0), reused 0 (delta 0), pack-reused 612Receiving objects:  87% (533/612), 2.10 MiB | 599.00 KiBRe

Resolving deltas: 100% (104/104), done.

可以看到,成功克隆到本地

总结

用https协议克隆项目时,报错提示找不到对应的证书文件,是因为证书路径错误;

如果想简单一点解决,就直接 全局配置 证书路径:git config --global http.sslcainfo Git安装目录/mingw64/ssl/certs/ca-bundle.crt

如果想更加细化地配置,则可以基于之前的配置进行修改;

  • 如果之前配置在系统配置路径(/etc/gitconfig),则配置命令为:git config --system http.sslcainfo E:/Git/mingw64/ssl/certs/ca-bundle.crt
  • 如果之前配置在全局配置路径(~/.gitconfig),则配置命令为:git config --global http.sslcainfo E:/Git/mingw64/ssl/certs/ca-bundle.crt (该 全局配置 会覆盖上面的 系统配置)
0

评论区