使用 Watt Toolkit(原 Steam++)进行网络加速后,在运行 git clone 等命令时,可能会产生 Git 报错“SSL certificate problem: unable to get local issuer certificate”,这是因为 Watt Toolkit 在本地代理网络请求时使用了自签名证书。这种自签名证书并非由受信任的证书颁发机构(CA)签发,因此 Git 默认会拒绝连接。
解决报错
要解决这个问题,有两种方式,一种是禁用 SSL 证书验证,另一种是让 Git 使用 Watt Toolkit 的证书进行验证。
方式一 禁用 SSL 证书验证
通过命令禁用 Git 的 SSL 证书验证。这种方法简单直接,但会降低安全性,因为 Git 不再验证服务器的身份。
bashgit config --global http.sslVerify false
如果要重置:
powershellgit config --global --unset http.sslCAInfo
方式二 导入 Watt Toolkit 的自签名证书
将 Watt Toolkit 的自签名证书导入到 Git 的信任列表中:
- 打开 Watt Toolkit,点击“打开证书文件夹”,找到
SteamTools.Certificate.cer文件。 - 使用以下命令将证书路径添加到 Git 配置中(路径需替换为实际路径):
powershellgit config --global http.sslCAInfo C:\Users\huayemao\AppData\Local\Steam++\Plugins\Accelerator\SteamTools.Certificate.cer
为什么代理后 Git 会提示不安全,而浏览器不会?
报错是解决了,但为什么代理后 Git 报这个错,而浏览器却没有进行安全提示呢?原因是 Git 和浏览器的证书信任机制不同
实际上,在 windows 中使用 Watt Toolkit 来代理时, Watt Toolkit 已经将其自签名证书导入到证书管理器的“受信任的根证书颁发机构”中。这在 windows 证书管理器工具中可以看到。

使用了代理后,与 github 连接时,在浏览器的开发者工具的“网络”面板中,可以看到,请求的远程地址是 127.0.0.1:443,这说明代理生效。在浏览器证书查看器中查看 github 的证书时,可以看到证书颁发者的名称是 SteamTools Certificate,这跟从 Watt Toolkit 中查看到的证书信息一致。
而浏览器通常会直接使用操作系统的证书存储来验证 SSL 证书,所以该颁发者是被浏览器信任的。
这样,虽然与 github 服务器的连接经过了本地代理,浏览器接收到的证书实际上是来自本地的自签名证书,但由于 Watt Toolkit 通过植入根证书的方式获得了操作系统对该自签名证书的信任,浏览器会认为连接是安全的,不会产生任何警告。
但Git 和浏览器的证书信任机制不同。Git 在 Windows 上默认不使用系统的证书存储来验证 SSL 证书。而是依赖于配置文件或默认的证书文件(如 C:\Program Files\Git\mingw64\etc\ssl\certs\ca-bundle.crt),所以 Git 仍然可能不信任该证书,于是如果需要信任该本地代理,需要手动将证书路径添加到 Git 配置中。

