前言
克隆远程项目到本地时,用https协议报错,提示找不到对应的证书文件;
但是git协议正常;
目录
- 问题描述
- 原因分析
- 解决办法
正文
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.sslcainfo
为F:/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
,这样全局配置会覆盖前面的系统配置,只是同一个参数有多个重复配置,后期容易搞混;
关于配置路径,可以参考下面的图:
完整的配置命令如下:
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
(该 全局配置 会覆盖上面的 系统配置)
评论区