应优先配置 git 使用系统 ssl 后端:windows 执行 git config --global http.sslbackend schannel,macos 执行 git config --global http.sslbackend secure-transport,使其自动信任系统根证书;避免使用 http.sslverify false 防止凭据泄露和中间人攻击。

Git clone 报错 SSL certificate problem: unable to get local issuer certificate 怎么办
这是 Windows/macOS 上 Git 使用 HTTPS 协议时最常遇到的 SSL 校验失败问题,本质是 Git 自带的 OpenSSL 无法验证服务器证书链——不是你网络有问题,也不是 GitHub 坏了,而是 Git 没配好信任根证书。
最直接有效的做法是让 Git 复用系统已有的证书库(Windows/macOS 都自带可信 CA),而不是依赖它自带的过期或不全的 ca-bundle.crt:
- Windows 用户:运行
git config --global http.sslCAInfo "C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt"(路径以你实际安装为准;但更推荐下一步) - 通用稳妥方案:执行
git config --global http.sslBackend schannel(Windows)或git config --global http.sslBackend secure-transport(macOS),强制 Git 走系统 SSL 栈,自动信任系统证书 - 临时绕过(仅调试用):
git config --global http.sslVerify false—— 别长期开着,会暴露凭据风险
为什么 curl 能通但 git clone 报 SSL 错误
因为 Git 默认用自己打包的 libcurl + OpenSSL,而系统 curl 通常链接的是系统 OpenSSL 或 Secure Transport,证书源不同。Git 的证书包(ca-bundle.crt)可能陈旧、缺失中间证书,或被杀毒软件拦截更新。
验证方法:运行 git config --get http.sslCAInfo 看当前指向哪;再对比 curl -v https://github.com 的 TLS 握手日志里用的 CA 路径。
GitHub 仓库备份技能 - 将 OpenClaw 工作空间自动或手动备份至 GitHub 私有仓库。支持自动定时备份和手动交互式配置,引导完成 Token 配置、仓库创建、首次备份及定时任务设置。用途:(1) 首次设置 (2) 日常备份。
- Git 自带证书路径常见位置:
C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt(Windows)、/usr/share/curl/ca-bundle.crt(Linux) - macOS 上
secure-transport后端会自动读取钥匙串里的「系统根证书」,无需手动指定文件 - 某些企业环境代理会重签 HTTPS 流量,此时必须把代理的根证书导入系统信任库,再配 Git 用系统后端
http.sslVerify false 看似快,但埋了哪些雷
关掉 SSL 校验后,Git 会接受任何证书(包括自签名、过期、域名不匹配、甚至中间人伪造的),所有 HTTPS 请求都裸奔传输账号密码和 token。
- GitHub Personal Access Token、GitLab CI Token 一旦泄露,等于仓库控制权丢失
- 公司内网 Git 服务若被 DNS 劫持或 ARP 欺骗,代码可能被悄悄替换
- CI/CD 流水线里设了这个配置,等于把整个构建链路的 TLS 安全性归零
- 部分 Git 主机(如 Azure DevOps)在 token 认证时会额外校验证书有效性,关掉后反而 401
Git for Windows 新版本(2.37+)默认行为变化
新版 Git for Windows 已默认启用 schannel 后端,不再依赖内置证书包。如果你还报 SSL 错,大概率是旧配置残留或手动改过 http.sslCAInfo。
检查并清理旧配置:
- 运行
git config --global --get-all http.sslCAInfo,如果有输出,用git config --global --unset-all http.sslCAInfo清掉 - 确认后端:运行
git config --global http.sslBackend,应为schannel(Win)或空值(此时自动选系统后端) - 仍不行?删掉
%USERPROFILE%\.gitconfig里所有http.*相关行,重启终端重试
真正麻烦的从来不是证书本身,而是 Git 在不同平台、不同版本、不同安装方式下对 SSL 后端和证书路径的隐式选择逻辑——配错一行,后面所有 clone/fetch/push 都在裸奔。










