根本原因是vscode 1.77+启用严格签名验证,校验signature.sig、manifest.json、证书有效期及系统时间偏差±5分钟内,镜像源不重签也不改包结构,故改serviceurl无效。

VSCode 插件安装报 “Signature verification failed” 或 “Untrusted: Signature”,根本不是网络问题,而是它在解压 .vsix 后校验签名时失败了——哪怕你离线装、换镜像源、关代理,只要签名不合规,就卡在这一步。
为什么改 serviceUrl 也没用
镜像源(比如 https://open-vsx.org 或 https://vscode.cdn.azure.cn)只替换请求地址,不重签、不修改 .vsix 文件结构。VSCode 1.77+ 默认启用严格签名验证,会检查:
-
signature.sig文件是否存在且格式合法 - 证书链是否完整、未过期(
openssl pkcs7 -in signature.sig -print_certs -noout可查) - 系统时间偏差是否超 ±5 分钟(VSCode 不提示,但直接拒校验)
-
manifest.json是否在 ZIP 根目录下(缺这个 = 签名无效)
手动装 .vsix 报错 “Corrupted ZIP” 或 “Signature verification failed”
这不是下载失败,是 VSCode 在本地解压后发现包结构或签名异常。常见原因和操作建议:
- 用
unzip -t xxx.vsix检查 ZIP 完整性;若报错,说明下载被截断,换curl -L -o xxx.vsix [url]重下 - 用 7-Zip 或
unzip -l xxx.vsix确认根目录含package.json和extension/目录,否则是打包错误 - 打开
package.json,检查"engines": {"vscode": "^1.90.0"}—— 若你本地是1.96.3,语义化版本匹配失败也会触发签名拦截 - 临时绕过:把
"engines"改成精确版本"1.96.3",再用 ZIP 工具重打包(注意不是重命名),后缀改回.vsix
远程开发(SSH / WSL / Container)中报 [error] Untrusted: Signature
远程端运行的是 vscode-server,它的签名校验逻辑独立于本地客户端,配置也不同。错误常出现在更新插件或首次安装时:
- 配置文件路径是:
~/.vscode-server/data/Machine/settings.json(不是本地User/settings.json) - 添加
"extensions.verifySignature": false是最快解法(仅限可信环境) - 别漏掉
.前缀:.vscode-server是隐藏目录,Windows 下需显示隐藏文件才能编辑 - 改完必须重启远程服务:在命令面板执行
Developer: Restart Remote Connection,或杀掉所有node进程再重连
汉化包、离线包、国产系统上签名失败的特殊处理
ms-ceintl.vscode-language-pack-zh-hans 等语言包在麒麟/UOS/统信等系统上极易报签名错误,因为:
- 系统自带 OpenSSL 版本低,无法解析新版 PKCS#7 签名
- 离线环境无法回源校验,VSCode 默认拒绝加载
- 双击安装已被禁用(1.70+),必须走
Extensions: Install from VSIX
最稳做法是:下载官网原包 → 解压改 package.json 中的 engines.vscode 为本地精确版本 → 重打包 → 命令面板安装 → 再配 locale.json 为 "zh-cn"。签名校验失败时,别碰系统时间、别关防火墙——它根本不读这些。











