企业内网环境下VS Code登录GitHub报错无法获取本地颁发者证书求助
两个报错的核心原因如下:
- 第一次报错是公司内网代理启用了SSL中间人劫持,会替换所有HTTPS请求的证书为企业自签证书,VS Code默认不信任该自签证书,因此触发证书校验失败
- 第二次报错是除了Windows系统代理外,VS Code、环境变量、Git配置中任意一处留存了公司代理地址,都会导致VS Code优先读取该配置发起请求,删除系统代理后就会触发代理不可达报错
排查步骤
- 检查VS Code内置代理配置:按
Ctrl+Shift+P打开命令面板,输入Preferences: Open Settings (JSON),查看配置文件中是否存在http.proxy、https.proxy相关配置项,若存在则说明VS Code单独配置了代理,不受系统代理设置影响 - 检查Windows环境变量:查看系统变量和用户变量中是否存在
HTTP_PROXY、HTTPS_PROXY、ALL_PROXY三个变量,若存在则会被VS Code的Node.js运行环境默认读取 - 检查Git全局配置:打开cmd执行
git config --global --list,查看是否有http.proxy、https.proxy配置项,VS Code的GitHub授权逻辑会复用本地Git的网络配置
解决方案
场景1:继续使用公司代理(符合企业内网安全规范,推荐)
- 导出公司代理的根证书(PEM格式,后缀为.crt或.pem),存放在本地固定路径
- 打开VS Code的settings.json文件,添加以下配置:
// 填公司代理地址,需要认证的话格式为http://用户名:密码@代理地址:端口 "http.proxy": "http://你的公司代理地址:端口", // 填本地存的根证书绝对路径 "http.proxyCa": "C:/certs/company-root.crt"
- 也可以新增Windows系统环境变量
NODE_EXTRA_CA_CERTS,值为根证书的绝对路径,重启VS Code后生效,可同时解决所有VS Code内Node.js进程的证书校验问题
场景2:绕过公司代理(仅确认网络允许直连外网时使用)
- 清空VS Code settings.json中所有代理相关配置
- 删除Windows环境变量中的
HTTP_PROXY、HTTPS_PROXY、ALL_PROXY - 执行以下命令清除Git代理配置:
git config --global --unset http.proxy git config --global --unset https.proxy
- 在settings.json中添加配置
"http.proxySupport": "off",强制VS Code禁用代理逻辑,重启VS Code后重新发起登录即可
内容的提问来源于stack exchange,提问作者Schumann
相关产品推荐
相关产品推荐

