前言
在使用 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 服务(包括自建的,比如 gitlab、gogs 等),本文仅以 github 站点为例
点击浏览器网址左侧的小锁,选择证书

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

下一步

选择 Base64 编码

填写保存证书文件的位置

完成

接下来看看 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.