前言
在使用 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.