验证 ECDSA 注册表签名

为了确保您从公共 npm 注册表或任何支持签名的注册表下载的包的完整性,您可以使用 npm CLI 验证下载包的注册表签名。

先决条件

  1. 安装 npm CLI 版本 v8.15.0 或更高版本
  2. 使用 npm installnpm ci 安装依赖项

验证注册表签名

可以使用以下 audit 命令验证注册表签名:

npm audit signatures

如果所有已安装的版本都具有有效的注册表签名,则示例响应:

audited 1640 packages in 2s

1640 have verified registry signatures

故障排除

某些包缺少注册表签名

如果包没有签名并且包注册表支持签名,CLI 将出错。这可能意味着攻击者可能试图绕过签名验证。您可以通过向 registry-host.tld/-/npm/v1/keys 请求公共签名密钥来检查注册表是否支持签名。

如果某些版本缺少注册表签名,则示例响应:

audited 1640 packages in 2s

1405 packages have verified registry signatures

235 packages have missing registry signatures but the registry is providing signing keys:

missing-dep@1.0.0 (https://registry.npmjs.org/)
...