审计签名

中英双语

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

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

$ npm audit signatures

如果遵循以下约定,npm CLI 支持任何注册表提供的注册表签名和签名密钥:

  1. 签名在 dist 对象中每个已发布版本的包的 packument 中提供:
"dist":{
  "..omitted..": "..omitted..",
  "signatures": [{
    "keyid": "SHA256:{{SHA256_PUBLIC_KEY}}",
    "sig": "a312b9c3cb4a1b693e8ebac5ee1ca9cc01f2661c14391917dcb111517f72370809..."
  }]
}

查看来自公共 npm 注册表的签名包的 示例

sig 使用以下模板生成:${package.name}@${package.version}:${package.dist.integrity}keyid 必须匹配下面的公共签名密钥之一。

  1. 公共签名密钥在 registry-host.tld/-/npm/v1/keys 以以下格式提供:
{
  "keys": [{
    "expires": null,
    "keyid": "SHA256:{{SHA256_PUBLIC_KEY}}",
    "keytype": "ecdsa-sha2-nistp256",
    "scheme": "ecdsa-sha2-nistp256",
    "key": "{{B64_PUBLIC_KEY}}"
  }]
}

键响应:

  • expires:空或简化扩展 ISO 8601 格式YYYY-MM-DDTHH:mm:ss.sssZ
  • keydid:公钥的sha256指纹
  • keytype:npm CLI 目前仅支持 ecdsa-sha2-nistp256
  • scheme:npm CLI 目前仅支持 ecdsa-sha2-nistp256
  • key:base64 编码的公钥

请参阅此 来自公共 npm 注册表的示例密钥响应