Skip to content

GitHub 提示 SSL 证书错误怎么办

Git 访问 GitHub 时报各种 SSL 错误,常见几种:

text
SSL certificate problem: unable to get local issuer certificate
OpenSSL SSL_read: Connection was reset
schannel: failed to receive handshake, SSL/TLS connection failed
gnutls_handshake() failed

它们成因不同,别急着关闭证书校验(那是最后手段且有安全风险)。先对症下药。

一、先判断类型

报错关键词大概率原因
unable to get local issuer certificate本地 CA 证书缺失/过期
Connection was reset / SSL_read网络层被干扰,不是证书本身问题
schannelWindows 用系统证书库,常与代理/拦截有关
certificate has expired / 时间相关系统时间不对

二、系统时间不对(最容易忽略)

证书校验依赖当前时间。系统时间偏差过大会导致"证书过期/尚未生效"。先校准时间:

powershell
# Windows:同步时间
w32tm /resync
bash
# Linux
sudo ntpdate pool.ntp.org   # 或开启 systemd-timesyncd

三、unable to get local issuer certificate

本地缺可信 CA 证书。正确做法是补证书,而不是关校验。

Git for Windows:自带证书,升级到最新版 Git 通常即可解决。或指定证书:

bash
git config --global http.sslCAInfo "C:/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt"

Linux:更新系统 CA:

bash
# Debian/Ubuntu
sudo apt-get update && sudo apt-get install --reinstall ca-certificates
# CentOS/RHEL
sudo yum reinstall ca-certificates

改用 OpenSSL 后端(Windows):schannel 出问题时可切回 OpenSSL:

bash
git config --global http.sslBackend openssl

四、Connection was reset / handshake failed

这类不是证书坏了,是握手被中途打断——典型的网络干扰。证书配置怎么改都没用,解决方向是:

五、代理拦截导致的证书错误

如果你用了会做 HTTPS 解密的代理/安全软件(企业网关、部分杀软),证书链会被替换,导致校验失败。办法:

  • 把企业根证书导入信任库;
  • 或让 git 只对 github 走你自己的干净代理(见 Git 设置代理)。

六、最后手段:临时关闭校验(不推荐)

只有在你明确信任网络环境、且急需一次性操作时:

bash
# 临时:仅本次命令
git -c http.sslVerify=false clone https://github.com/...

# 全局(有安全风险,用完记得改回)
git config --global http.sslVerify false
# 恢复
git config --global http.sslVerify true

安全警告

关闭 sslVerify 会让你无法察觉中间人攻击。切勿在不可信网络长期关闭,操作完立即恢复为 true

排查速查

text
SSL 报错
  ├─ 提示过期/时间? → 校准系统时间(方法二)
  ├─ local issuer? → 更新/指定 CA 证书(方法三)
  ├─ reset / handshake? → 网络干扰,走代理/SSH443(方法四)
  ├─ 用了企业网关/杀软? → 导入根证书(方法五)
  └─ 急用一次 → 临时 sslVerify=false,用完恢复(方法六)

小结

  • 先看是"证书问题"还是"网络问题"——reset/handshake 类是网络,别瞎改证书。
  • 缺证书就补证书 / 升级 Git,别直接关校验。
  • 关校验是最后手段,用完立刻恢复。

本文仅供技术学习与研究,请遵守所在国家/地区法律法规。

本站为技术学习交流站点,与 GitHub, Inc. 无任何隶属或官方关系。所有内容仅供技术研究与学习,请遵守所在国家/地区的法律法规。