GitHub Desktop访问仓库报错:schannel无法打开CA文件
先把你遇到的完整错误信息贴出来,方便对照:
fatal: unable to access 'https://github.com/Repository_name': schannel: failed to open CA file 'C:/Users/Username/AppData/Local/GitHubDesktop/app-1.2.1/resources/app/git/mingw64/ssl/certs/ca-bundle.crt': No such process
你说的场景我太熟了:GitHub Desktop突然罢工,不管是fetch、pull、push还是clone,操作任何仓库都抛这个错,但换bash执行一模一样的命令却完全正常。
为啥会这样?
核心原因是GitHub Desktop自带了一套独立的Git环境,报错里的路径就是它自带Git的CA证书存放位置。要么是这个路径里的ca-bundle.crt文件丢了,要么是GitHub Desktop更新后,版本文件夹(比如app-1.2.1)已经变了,但配置里还在用旧路径,导致找不到文件。而你用bash的时候,调用的是系统里单独安装的Git,用的是系统的证书配置,所以完全不受影响。
具体解决办法,按简单程度排序:
方案1:直接重装GitHub Desktop
这是最省心的办法,卸载当前版本后重新下载最新版安装。重装会自动修复所有缺失的文件和路径配置,大概率一次解决问题。方案2:手动修正证书路径
- 先去
C:/Users/Username/AppData/Local/GitHubDesktop/目录下,看看最新的app-xxx文件夹是什么(比如现在可能是app-3.3.2,而不是报错里的app-1.2.1)。 - 找到GitHub Desktop自带Git的配置文件,要么是在它的
mingw64/etc/gitconfig里,要么是你用户目录下的.gitconfig文件。 - 找到
http.sslCAInfo这一行,把路径改成最新的ca-bundle.crt位置,比如:[http] sslCAInfo = C:/Users/Username/AppData/Local/GitHubDesktop/app-3.3.2/resources/app/git/mingw64/ssl/certs/ca-bundle.crt - 保存配置后重启GitHub Desktop,再试试操作仓库。
- 先去
方案3:补全缺失的证书文件
如果是ca-bundle.crt文件丢了,你可以从系统里独立安装的Git目录里复制一份过来(比如系统Git的mingw64/ssl/certs/ca-bundle.crt),放到报错里指定的路径,或者最新版本文件夹对应的证书目录里。
内容的提问来源于stack exchange,提问作者VersAtile




