应设http.proxyStrictSSL: false并重启VSCode(含托盘进程),因code命令由Electron驱动,其证书校验独立于Node.js,环境变量NODE_TLS_REJECT_UNAUTHORIZED无效。

code --install-extension 报 SSL 证书错误怎么绕过
VSCode 命令行安装插件时出现 SSL 错误(如 net::ERR_CERT_AUTHORITY_INVALID 或 UNABLE_TO_VERIFY_LEAF_SIGNATURE),本质不是 code 命令本身校验证书,而是它背后发起的 HTTPS 请求(比如下载 .vsix、校验 marketplace 接口)被代理或中间设备劫持,且证书未被信任。你不能用命令行参数直接“忽略证书”,但可通过环境变量和配置组合生效。
-
http.proxyStrictSSL必须设为false:这是最直接有效的开关,告诉 VSCode 在走代理时跳过对代理返回证书的校验。仅配http.proxy不生效 - 必须在用户级
settings.json中设置,不是工作区或远程设置;路径通常是~/.config/Code/User/settings.json(Linux/macOS)或%APPDATA%\Code\User\settings.json(Windows) - 改完后要完全退出 VSCode(包括托盘进程),否则新配置不加载到 CLI 环境中
- 若用 WSL,注意该配置需在 Windows 主机侧设置——WSL 内的 VSCode Server 不读取 WSL 的
settings.json
为什么 NODE_TLS_REJECT_UNAUTHORIZED=0 对 code 命令无效
NODE_TLS_REJECT_UNAUTHORIZED=0 只影响 Node.js 进程自身的 TLS 行为,而 code --install-extension 是由 Electron 主进程驱动的,它用的是 Chromium 网络栈,不是 Node.js 的 https 模块。所以你在 shell 里 export 这个变量,对 code 命令毫无作用。
- Electron 的证书校验逻辑独立于 Node.js,受
http.proxyStrictSSL和系统根证书库控制 - 试图在终端运行
NODE_TLS_REJECT_UNAUTHORIZED=0 code --install-extension xxx.vsix会静默失败,日志里仍报证书错误 - 这个环境变量只对你在终端里直接跑的
node script.js或npm install生效
手动下载 .vsix 后安装仍报“校验失败”?那不是 SSL 问题
如果你已经下载好 .vsix 文件,再执行 code --install-extension /path/to/xxx.vsix 却提示 Signature verification failed,这和网络、SSL、代理全无关系——是 VSCode 1.77+ 的本地签名验证机制在起作用。
- 检查 .vsix 是否真的来自官方页面:只有 marketplace.visualstudio.com 插件页上的「Download Extension」按钮下载的包才带完整
signature.sig - 用 7-Zip 或
unzip -l xxx.vsix打开,确认 ZIP 根目录下同时存在signature.sig和manifest.json - 系统时间偏差 > ±5 分钟也会触发该错误,且不提示具体原因;可运行
date核对 - 别用浏览器“另存为”第三方聚合页的链接——那些 .vsix 多数已被剥离签名
离线安装时最容易被忽略的权限陷阱
Linux/macOS 下,如果 .vsix 文件权限是只读(例如从 FAT32/U 盘拷贝过来),VSCode 解压时无法写入临时目录,会伪装成签名失败报错——实际是 I/O 权限问题。
- 运行
chmod +w my-ext.vsix确保文件可写 - VSCode 安装过程会在
/tmp或$TMPDIR创建解压目录,确保该路径有写权限且空间充足 - 若用
sudo code --install-extension,会导致扩展装进 root 用户目录,普通启动 VSCode 时不可见——永远不要加 sudo


















