禁用http.sslverify虽可临时解决git https报错,但会彻底丧失ssl安全保护;应优先排查url协议、系统时间、代理环境,推荐使用系统ssl后端(windows用schannel,macos用secure-transport),必要时手动指定可信证书路径并验证配置。

直接关掉 http.sslVerify 能让命令跑通,但等于把 HTTPS 的安全门锁拆了——代码推上去,中间人可能就截走了。这不是“解决”,只是绕开问题。
先确认是不是 URL 或系统时间惹的祸
很多看似 SSL 的问题,其实压根没走到证书校验那步:
-
git remote -v看一眼远程地址,要是还写着http://(没加s),那就先执行git remote set-url origin https://... - 系统时间错 5 分钟以上,证书有效期判断就会失败——用
date或系统设置核对本地时间 - 公司内网、机场 WiFi、某些代理环境,实际连的是中间人代理,它发的证书自然不在 Git 默认信任列表里
优先用系统 SSL 栈(Windows/macOS)
Git 自带的 OpenSSL + ca-bundle.crt 容易过期或路径错乱,不如直接交给操作系统管证书:
- Windows:运行
git config --global http.sslBackend schannel,之后 Git 就走 Windows 的 SChannel,自动信任系统证书管理器里的所有根证书 - macOS:运行
git config --global http.sslBackend secure-transport,交由钥匙串服务验证,兼容 Apple Silicon 和 Intel - 改完立刻生效,不用重启终端,也不用找证书文件路径
必须手动指定证书路径时,别信默认路径
有些环境(比如自编译 Git、Docker 容器、旧版 Git for Windows)不会自动加载证书,得你指明位置:
- Windows Git for Windows:证书通常在
C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt,但请先ls "C:/Program Files/Git/mingw64/ssl/certs/"确认文件存在;路径里斜杠必须用正斜杠(/),反斜杠(\)会出错 - macOS Homebrew Git:
/opt/homebrew/etc/ca-certificates/cert.pem(M1/M2)或/usr/local/etc/ca-certificates/cert.pem(Intel),执行前先ls看文件是否存在 - Linux(Debian/Ubuntu):
/etc/ssl/certs/ca-certificates.crt,但得确认它不是空文件——head -n 1 /etc/ssl/certs/ca-certificates.crt应该输出 PEM 头 - 设完记得验证:
git config http.sslCAInfo输出应为对应路径
临时救急可以,但别留着 http.sslVerify false
它确实让命令跑起来,但也让所有 HTTPS 请求裸奔:
- 单次命令绕过:
git -c http.sslVerify=false clone https://...,只影响这一条命令 - 全局禁用:
git config --global http.sslVerify false—— 别长期开着,会暴露凭据风险;尤其在公共项目或 CI 环境中,这是高危操作 - 更安全的替代:只对特定域名关闭验证,例如
git config --global http."https://gitlab.internal/".sslVerify false
真正容易被忽略的点是:一旦你设了 http.sslBackend = schannel(Windows)或 secure-transport(macOS),http.sslCAInfo 就完全失效了——再改路径也没用。这时候该去 Windows 证书管理器或 macOS 钥匙串里导入根证书,而不是继续折腾 Git 配置文件。











