Mensaje de error
1 package has an invalid registry signature:
También se muestra como
- Someone might have tampered with this package since it was published on the registry!
- packages have invalid registry signatures:
- has a registry signature with keyid: SHA256:demo-registry-key-2026 but no corresponding public key can be found
Forma plural: «N packages have invalid registry signatures:». Una firma cuyo `keyid` no está entre las claves del registro falla con el código `EMISSINGSIGNATUREKEY` («…has a registry signature with keyid: … but no corresponding public key can be found»); cada atestación de procedencia no válida aparece bajo «…has an invalid attestation».
npm audit signatures (npm 9.5+) — registry signature check of installed packages
Qué significa
npm descargó las claves de firma públicas del registro y comprobó la firma del registro de cada paquete instalado —una firma ECDSA sobre `name@version:integrity`— y, en al menos un paquete, no se pudo verificar. O bien los metadatos del paquete (incluido el hash de integridad del tarball) cambiaron después de que el registro los firmara, o bien el registro desde el que se instaló firma con claves que no publica. npm enumera los paquetes afectados y termina con «Someone might have tampered with this package since it was published on the registry!».
Por qué ocurre
Un registro espejo o proxy sirve otros metadatos
frecuenteEspejos privados (Verdaccio, Artifactory, Nexus) que reescriben las URL de los tarballs o vuelven a empaquetar los paquetes, pero conservan las firmas originales, o bien firman con su propia clave sin publicarla en `/-/npm/v1/keys`.
Se modificaron los metadatos o el contenido del paquete
ocasionalEl hash de integridad o el tarball no coinciden con lo que firmó el registro. Trata el paquete como comprometido hasta que se demuestre lo contrario.
Claves obtenidas de otro sitio
ocasionalCon un registro personalizado, npm obtiene las claves de ese registro. Si devuelve las claves del registro público mientras sirve metadatos firmados de nuevo (o al revés), la verificación falla.
Cómo solucionarlo
- 1.
Comparar con el registro público
Si el valor de integridad del registro público para la misma versión coincide con tu lockfile, el problema es el espejo; si no, se modificó el lockfile o el paquete.
bash # Same version, straight from the public registry: does the integrity match your lockfile? npm view left-pad-lite@1.0.0 dist.integrity --registry https://registry.npmjs.org/ grep -A3 '"node_modules/left-pad-lite"' package-lock.json | grep integrity - 2.
Ejecutar la comprobación en CI
`npm audit signatures` después de `npm ci` hace fallar la compilación ante dependencias sin firmar, mal firmadas o cuya procedencia no coincide.
yaml # CI: fail the build on missing or invalid signatures and provenance - run: npm ci - run: npm audit signatures