欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入免费知识星球。

解决git克隆时的SSL certificate problem: unable to get local issuer certificate

IT技巧 迷途小书童 3年前 (2021-03-17) 4601次浏览 0个评论

前言

在使用 git 克隆代码的时候,经常会碰到下面的报错信息

SSL certificate problem: unable to get local issuer certificate

解决方法一

看错误信息,大概就知道跟 ssl 相关。最简单的方法就是在克隆的时候,不去验证 ssl,来到命令行( windows 的话,就到 CMD ),输入

git config --global http.sslverify false

重新克隆就 OK 了。

解决方法二

重新安装 git,然后选择 SSL transport backend,如果嫌麻烦不想重装的话,也可以手动去设置这个选项,执行命令

git config --global http.sslBackend schannel

解决方法三

方法一忽略 ssl,比较简单粗暴,很多人会担心安全问题,那么就可以采用方法二。这种方法适用于所有的 git 服务(包括自建的,比如 gitlabgogs 等),本文仅以 github 站点为例

点击浏览器网址左侧的小锁,选择证书

git ssl

来到详细信息,点击下方的复制到文件

git ssl

下一步

git ssl

选择 Base64 编码

git ssl

填写保存证书文件的位置

git ssl

完成

git ssl

接下来看看 git 默认使用的证书

使用命令 git config --list --show-origin,可以看到 http.sslcainfo 这个变量的值是 C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt,也就是默认的证书存放位置,我们将 ca-bundle.crt 文件拷贝出来备用

(base) PS D:\Projects> git config --list --show-origin
file:"C:\\ProgramData/Git/config"       core.symlinks=false
file:"C:\\ProgramData/Git/config"       core.autocrlf=true
file:"C:\\ProgramData/Git/config"       core.fscache=true
file:"C:\\ProgramData/Git/config"       color.diff=auto
file:"C:\\ProgramData/Git/config"       color.status=auto
file:"C:\\ProgramData/Git/config"       color.branch=auto
file:"C:\\ProgramData/Git/config"       color.interactive=true
file:"C:\\ProgramData/Git/config"       help.format=html
file:"C:\\ProgramData/Git/config"       rebase.autosquash=true
file:C:/Program Files/Git/mingw64/etc/gitconfig http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
file:C:/Program Files/Git/mingw64/etc/gitconfig http.sslbackend=openssl
file:C:/Program Files/Git/mingw64/etc/gitconfig diff.astextplain.textconv=astextplain
file:C:/Program Files/Git/mingw64/etc/gitconfig filter.lfs.clean=git-lfs clean -- %f
file:C:/Program Files/Git/mingw64/etc/gitconfig filter.lfs.smudge=git-lfs smudge -- %f
file:C:/Program Files/Git/mingw64/etc/gitconfig filter.lfs.process=git-lfs filter-process
file:C:/Program Files/Git/mingw64/etc/gitconfig filter.lfs.required=true
file:C:/Program Files/Git/mingw64/etc/gitconfig credential.helper=manager

接下来,将从 github 站点导出的证书文件内容全部拷贝,包括了开头的 -----BEGIN CERTIFICATE----- 和结尾的 -----END CERTIFICATE-----,粘贴到 ca-bundle.crt 文件的末尾。

可以看到 ca-bundle.crt 是证书的集合,一个站点一条记录。

然后进行 git 的配置,将 http.sslcainfo 指向修改后的 ca-bundle.crt 文件

git config --global http.sslcainfo C:/Users/Matt/ca-bundle.crt

最后,重新 git clone 测试一下

(base) PS D:\Projects> git clone https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch.git
Cloning into 'Yolov5_DeepSort_Pytorch'...
remote: Enumerating objects: 39, done.
remote: Counting objects: 100% (39/39), done.
remote: Compressing objects: 100% (30/30), done.

参考资料

喜欢 (0)

您必须 登录 才能发表评论!