必须手动导入根证书并禁用自动证书验证,否则 VSCode 会拒绝连接所有自签名或私有 CA 签发的服务;因其基于 Electron 复用 Chromium 网络栈,仅信任系统级证书库,不自动加载企业私有 CA,国产化系统默认无内部 CA,导致 HTTPS 请求失败。

必须手动导入根证书并禁用自动证书验证,否则 VSCode 会拒绝连接所有自签名或私有 CA 签发的服务(包括 GitLab、code-server、Tabnine 自托管服务器等)。
为什么 VSCode 默认不信任企业私有 CA
VSCode 基于 Electron 构建,其网络栈复用 Chromium 的证书验证逻辑,只信任操作系统级证书存储(Windows Cert Store / macOS Keychain / Linux ca-certificates),但不会自动读取企业内网部署的私有根证书。尤其在国产化环境(如麒麟 V10、统信 UOS)中,系统证书库默认不含内部 CA,导致 HTTPS 请求直接失败。
-
net::ERR_CERT_AUTHORITY_INVALID是最常见错误,出现在 Git 操作、扩展更新、Remote-SSH 元数据同步等场景 - 即使
git config --global http.sslVerify false临时绕过,也无法解决 Tabnine 或 Remote-SSH 的 TLS 握手失败 - VSCode 2026 版本已强制启用 SM2/SM4 国密算法支持,但若私有 CA 未签发 SM2 根证书,仍会校验失败
导入根证书到 VSCode 运行时环境
不能只靠系统级安装——VSCode 启动时可能使用独立的 Node.js 运行时,需显式指定证书路径。关键操作是设置 NODE_EXTRA_CA_CERTS 环境变量:
- 将企业根证书(PEM 格式)保存为
/opt/certs/internal-ca.pem(Linux/macOS)或C:\certs\internal-ca.pem(Windows) - 在启动 VSCode 前注入环境变量:
NODE_EXTRA_CA_CERTS=/opt/certs/internal-ca.pem code(Linux/macOS)set NODE_EXTRA_CA_CERTS=C:\certs\internal-ca.pem & code(Windows CMD) - 若使用桌面快捷方式,需修改启动脚本或 .desktop 文件,在
Exec=行追加环境变量前缀 - 验证是否生效:打开 VSCode 终端,运行
console.log(process.env.NODE_EXTRA_CA_CERTS);也可尝试curl https://gitlab.internal(需先安装 curl)
配置 VSCode 自身的证书信任策略
仅靠 NODE_EXTRA_CA_CERTS 不足以覆盖全部组件。Remote-SSH 和某些扩展(如 Tabnine)使用独立 SSH/TLS 客户端,需额外配置:
- 在用户级
settings.json中禁用自动证书警告(仅限内网可信环境):"http.proxyStrictSSL": false—— 影响 HTTP 客户端(如扩展市场请求)"remote.SSH.enableAgentForwarding": true—— 配合 SSH 的ForwardAgent yes复用系统 SSH 代理的信任链 - 对于 Remote-SSH 连接,确保远程服务器的
/etc/ssh/sshd_config启用TrustedUserCAKeys并指向企业 CA 公钥文件,否则ssh -o "PubkeyAcceptedAlgorithms=+ssh-ed25519"可能因算法不匹配失败 - Tabnine 自托管客户端需在
settings.json显式设置:"tabnineSelfHostedUpdater.serverUrl": "https://tabnine.internal",且该域名必须由企业 CA 签发证书,否则validateUrl()函数会返回false
国产化平台下的特殊处理点
在麒麟 V10 SP4、OpenEuler 24.03 等信创系统中,证书链验证还受国密模块干预:
- 确认系统已安装
gmssl并注册为默认 OpenSSL 引擎:openssl engine -t -c gmssl应返回available - VSCode 2026 内置的国密 TLS 模块要求根证书含 SM2 公钥,且证书扩展字段
subjectAltName必须包含完整域名(如DNS:gitlab.internal),通配符*.internal不被接受 - 若使用龙芯 3A6000 平台,需检查
/proc/cpuinfo中是否启用loongarch-crypto扩展,否则 SM4 加解密会回退到纯软件实现,延迟超标
真正容易被忽略的是证书有效期与吊销检查——企业 CA 往往设置短有效期(如 90 天)且不部署 OCSP 响应器,VSCode 默认启用 OCSP stapling 校验,会导致间歇性连接失败。必须在 settings.json 中显式关闭:"http.experimental.disableOCSPStapling": true。


















