Git clone 报 SSL certificate problem 是因 Git 未正确配置可信 CA 根证书路径所致,需通过 git config --global http.sslCAInfo 指定有效证书文件路径,而非禁用验证。

Git clone 报 SSL certificate problem: unable to get local issuer certificate
这是 Windows/macOS 上 Git 使用系统 OpenSSL 或自带证书链时,找不到可信 CA 根证书导致的。不是网络问题,也不是 GitHub 换了证书,而是 Git 本身没配好信任库路径。
- Windows 安装 Git for Windows 默认用的是它自带的
curl和ca-bundle.crt,但有时路径没自动识别或被覆盖 - macOS 上 Git 可能调用系统钥匙串,也可能用 Homebrew 安装的 OpenSSL,两者证书源不一致就容易出错
- Linux(如 Ubuntu)通常没问题,因为系统级证书更新及时;但若用自编译 Git 或容器环境,
curl-ca-bundle缺失就会触发该错误
临时绕过验证(仅限测试/内网)
不推荐长期使用,但能快速验证是否真是证书问题——如果绕过之后 git clone 成功,说明就是证书链没对上。
- 只影响当前命令:
git -c http.sslVerify=false clone https://github.com/user/repo.git - 影响当前仓库:
git config http.sslVerify false(进到 repo 目录后执行) - 全局禁用(危险!不建议):
git config --global http.sslVerify false—— 后续所有 HTTPS 请求都跳过校验,中间人攻击风险真实存在
正确修复:让 Git 找到可用的 CA 证书文件
核心是告诉 Git 哪里放着可信的根证书。Git 本身不维护证书,它依赖 curl 或 OpenSSL 提供的证书包。
- 先查 Git 当前信任路径:
git config http.sslCAInfo,如果输出为空,说明没显式指定,Git 会按默认顺序找(比如curl-ca-bundle.crt) - Windows Git for Windows 用户:证书文件通常在
C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt,设上即可:git config --global http.sslCAInfo "C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt"(注意斜杠方向) - macOS Homebrew Git:证书常在
/opt/homebrew/etc/ca-certificates/cert.pem(Apple Silicon)或/usr/local/etc/ca-certificates/cert.pem(Intel),设为:git config --global http.sslCAInfo /opt/homebrew/etc/ca-certificates/cert.pem - Linux(Debian/Ubuntu):一般用
/etc/ssl/certs/ca-certificates.crt,但需确认文件存在:ls /etc/ssl/certs/ca-certificates.crt
CI/CD 环境或 Docker 中证书失效
镜像里往往没预装完整证书包,或者基础镜像太精简(如 alpine:latest)。这时候不能靠系统更新,得手动注入。
- Alpine 镜像:安装
ca-certificates包,并确保软链接存在:apk add --no-cache ca-certificates && update-ca-certificates - Docker 构建中 Git 失效:在
Dockerfile里加一句RUN git config --global http.sslCAInfo /etc/ssl/certs/ca-certificates.crt(前提是该路径已存在) - GitHub Actions:默认 Ubuntu runner 是好的,但如果用了自定义
container:,就得自己处理证书路径,否则actions/checkout会卡在 clone
http.sslCAInfo 还是报错”。多用 git config --get http.sslCAInfo 和 ls -l 看一眼路径是否存在、可读。










