Fehlermeldung
1 package has an invalid registry signature:
Auch ausgegeben als
- 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
Pluralform: „N packages have invalid registry signatures:“. Eine Signatur, deren `keyid` nicht zu den Schlüsseln der Registry gehört, führt zum Code `EMISSINGSIGNATUREKEY` („…has a registry signature with keyid: … but no corresponding public key can be found“); ungültige Provenance-Attestierungen werden unter „…has an invalid attestation“ aufgeführt.
npm audit signatures (npm 9.5+) — registry signature check of installed packages
Was der Fehler bedeutet
npm hat die öffentlichen Signaturschlüssel der Registry heruntergeladen und die Registry-Signatur jedes installierten Pakets geprüft – eine ECDSA-Signatur über `name@version:integrity` –, und bei mindestens einem Paket ist die Prüfung fehlgeschlagen. Entweder haben sich die Paketmetadaten (einschließlich des Integritäts-Hashes des Tarballs) geändert, nachdem die Registry sie signiert hat, oder die Registry, aus der du installiert hast, signiert mit Schlüsseln, die sie nicht veröffentlicht. npm listet die betroffenen Pakete auf und endet mit „Someone might have tampered with this package since it was published on the registry!“.
Warum der Fehler auftritt
Ein Mirror oder eine Proxy-Registry liefert andere Metadaten aus
häufigPrivate Mirrors (Verdaccio, Artifactory, Nexus), die Tarball-URLs umschreiben oder Pakete neu packen, aber die ursprünglichen Signaturen beibehalten – oder mit einem eigenen Schlüssel signieren, ohne ihn unter `/-/npm/v1/keys` zu veröffentlichen.
Metadaten oder Inhalt des Pakets wurden geändert
gelegentlichDer Integritäts-Hash oder der Tarball weicht von dem ab, was die Registry signiert hat. Betrachte das Paket als kompromittiert, bis das Gegenteil bewiesen ist.
Schlüssel aus einer anderen Quelle
gelegentlichBei einer eigenen Registry ruft npm die Schlüssel von dieser Registry ab. Liefert sie die Schlüssel der öffentlichen Registry, aber neu signierte Metadaten aus (oder umgekehrt), schlägt die Prüfung fehl.
So behebst du den Fehler
- 1.
Mit der öffentlichen Registry vergleichen
Stimmt der Integritäts-Hash, den die öffentliche Registry für dieselbe Version angibt, mit deinem Lockfile überein, liegt das Problem beim Mirror; wenn nicht, wurde das Lockfile oder das Paket verändert.
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.
Prüfung in der CI ausführen
`npm audit signatures` nach `npm ci` lässt den Build bei unsignierten, falsch signierten oder nicht zur Provenance passenden Abhängigkeiten fehlschlagen.
yaml # CI: fail the build on missing or invalid signatures and provenance - run: npm ci - run: npm audit signatures