从 npm 公共注册表验证包的 PGP 注册表签名(已弃用)
Table of contents
Note: 基于 PGP 的注册表签名将在 2023 年 4 月 25 日 上弃用,取而代之的是 ECDSA 注册表签名。 这意味着从该日期起,将不再使用 PGP 密钥签署任何新包,并且 托管在 Keybase 上的公钥 将过期。
为确保你从 npm 公共注册表下载的包版本的完整性,你可以手动验证包的 PGP 签名。
Note: 由于在 Keybase 上完全验证签名需要重新检查证明(这需要网络活动),因此成本很高,因此我们建议仅在必要时验证签名 - 例如,在验证部署工件时,或最初将包存储在缓存中时。
先决条件
- 从 https://keybase.io/download 安装 Keybase
- 在 https://keybase.io 上创建 Keybase 账户
- 在 Keybase 上关注 "npmregistry"。
- 下载 npm 公共注册表的 PGP 公钥 的本地副本。
验证公共注册表的 npm 签名
Note: 以下步骤以 light-cycle
包的 1.4.3 版本为例。
在命令行上,获取所需包版本的签名并将其保存在文件中:
npm view light-cycle@1.4.3 dist.npm-signature > sig-to-check获取该版本的完整性字段(以下示例包括响应):
npm view light-cycle@1.4.3 dist.integrity示例响应:
sha512-sFcuivsDZ99fY0TbvuRC6CDXB8r/ylafjJAMnbSF0y4EMM1/1DtQo40G2WKz1rBbyiz4SLAc3Wa6yZyC4XSGOQ==构造将唯一包名称和版本与完整性字符串联系起来的字符串(下面的示例包括响应):
keybase pgp verify --signed-by npmregistry -d sig-to-check -m 'light-cycle@1.4.3:sha512-sFcuivsDZ99fY0TbvuRC6CDXB8r/ylafjJAMnbSF0y4EMM1/1DtQo40G2WKz1rBbyiz4SLAc3Wa6yZyC4XSGOQ=='示例响应:
▶ INFO Identifying npmregistry✔ public key fingerprint: 0963 1802 8A2B 58C8 4929 D8E1 3D4D 5B12 0276 566A✔ admin of DNS zone npmjs.org: found TXT entry keybase-site-verification=Ls8jN55i6KesjiX91Ck79bUZ17eA-iohmw2jJFM16xc✔ admin of DNS zone npmjs.com: found TXT entry keybase-site-verification=iK3pjpRBkv-CIJ4PHtWL4TTcFXMpPiwPynatKl3oWO4✔ "npmjs" on twitter: https://twitter.com/npmjs/status/981288548845240320Signature verified. Signed by npmregistry 3 years ago (2018-04-13 15:00:37 -0700 MST).PGP Fingerprint: 096318028a2b58c84929d8e13d4d5b120276566a.
npm 中文网 - 粤ICP备13048890号