Git 客户端将会验证服务器端提供的SSL证书是否由受信任的证书颁发机构(Certification Authority,CA)签发。如果Git客户端无法找到或验证本地签发者证书,就会出现 unable to get local issuer certificate
或类似的错误。
该问题一般发生在 Windows 操作系统中。
我出现这个问题,是因为我的证书是自己签发的,但是我已经将根证书安装导入到系统的受信认根证书中。
方法一
忽略 SSL证书验证(不推荐):
git config --global http.sslVerify false
这是一种不建议的方法,但在某些情况下可以解决问题。
注意,这会导致Git不再验证SSL证书的真实性,可能会面临安全风险,请在仔细评估后再采用此方法。
方法二
配置 Git 使用 SChannel (推荐):
给操作系统安装过根证书后,还会出现这个错误,大概率可能是因为 git 默认使用的 Linux 加密后端,我们可以设置 git 使用Windows 网络层作为加密后端。。
从
Git for Windows 2.14
开始,可以配置 Git 使用SChannel
,SChannel
它是微软 Windows 操作系统中内置的安全支持提供程序 (SSP),用于实现安全通信协议,如 SSL(Secure Sockets Layer)和 TLS(Transport Layer Security)。这意味着它将使用Windows 证书存储机制,您不需要显式配置 curl CA 存储机制:https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123(v=vs.85).aspx
配置命令:
git config --global http.sslbackend schannel
方法三
还有一个使用命令 git config --global http.sslCAInfo
设置根证书的方法,不推荐。如果上面2种方法都无法解决你问题了,可以尝试。
(END)