问题描述
在 WSL 中使用 Github CLI 时,不论哪种登陆方式都登陆不了,报错,类似
| |
排查过程
搜索对应报错,发现是证书问题
排查发现,Windows 端与 Github 的通信被 Steamcommunity 302 代理了
使用的证书是 steamcommunity.crt,而这个证书在 WSL 里不存在,所以不能过 SSL 验证
下述内容参考
根本原因
在使用https(非http)的方式建立访问连接时, 客户端会校验服务器返回的证书是否合法, 如果不合法, 就会报错证书认证失败, 无法访问
客户端判断证书是否合法的方式为两种, 第一种是从公认的第三方证书颁发者中验证, 第二种是从本地已有的证书中验证, 像 https://www.baidu.com 这种知名网站就是其他CA组织颁发的证书
而 Steamcommunity 302 , 使用的证书是自签证书(自己颁发给自己的), 访问时若本地没有该证书, 则就会访问失败. 而在浏览器中能访问的原因是因为Window装了这个自签证书, 而在WSL中是没装的, 因此就需要手动在WSL中安装该证书
解决方法
在 Windows 端找到
steamcommunity.crt证书文件,通常可以在你放 Steamcommunity_302.exe 的同目录下找到把它复制到 WSL 里,随便你是用资源管理器还用是命令行
Ubuntu/Debian系统将证书文件复制到/usr/local/share/ca-certificates/CentOS/RedHat系统复制到/etc/pki/ca-trust/source/anchors/在 WSL 里运行更新证书命令
Ubuntu/Debian系统运行1sudo update-ca-certificatesCentOS/RedHat系统运行1sudo update-ca-trust重新运行 Github CLI 登陆命令,应该就可以成功登陆了



(〃∀〃)