Fehlermeldung
invalid signature when validating ASN.1 encoded signature
Auch ausgegeben als
- Error: failed to verify signature: could not verify message: invalid signature when validating ASN.1 encoded signature
- invalid signature when validating IEEE_P1363 encoded signature
Die Meldung wird als „Error: …“ und noch einmal als „error during command execution: …“ ausgegeben. Mit einem Bundle (`--bundle`) stellt cosign 3 „failed to verify signature: could not verify message:“ voran. Signaturen in der Form IEEE P1363 scheitern mit „…when validating IEEE_P1363 encoded signature“. Der Kerntext ist in cosign 2.6 und 3.1 derselbe.
Sigstore cosign (verify-blob / verify with --key) — sigstore-go signature verifier
Was der Fehler bedeutet
cosign hat die ECDSA-Signatur (DER/ASN.1-kodiert, daher der Wortlaut) über den Digest des Artefakts mit dem öffentlichen Schlüssel geprüft, den du angegeben hast, und sie passte nicht. Entweder ist der Schlüssel nicht derjenige, der signiert hat, oder das Artefakt weicht von dem ab, was signiert wurde. Anders als bei der schlüssellosen Prüfung spielen Identitäten oder das Transparenzlog keine Rolle – hier schlägt die reine Signaturprüfung fehl.
Warum der Fehler auftritt
Prüfung mit dem falschen öffentlichen Schlüssel
häufigEin Schlüssel aus einem anderen Projekt, einer anderen Umgebung oder einer anderen Release-Linie; oder ein Schlüssel, der rotiert wurde, während alte Signaturen noch geprüft werden.
Das Artefakt ist nicht das signierte
häufigEine neu gebaute Binärdatei, ein neu komprimiertes Archiv, eine über einen Proxy heruntergeladene Datei, die dieser verändert hat, oder Text mit umgewandelten Zeilenenden.
Signaturdatei eines anderen Artefakts
gelegentlich`.sig`-Dateien mehrerer Plattformen (`linux-amd64`, `darwin-arm64` …), die beim Download oder in einem Release-Skript vertauscht wurden.
So behebst du den Fehler
- 1.
Digest und Schlüssel vergleichen
Prüfe den SHA-256-Hash des Artefakts gegen den veröffentlichten Digest und den öffentlichen Schlüssel gegen den, der aus dem Signaturschlüssel abgeleitet wurde.
bash sha256sum artifact.txt # compare with the digest published with the release cosign public-key --key release.key > derived.pub # (key holder) public half of the signing key diff <(openssl pkey -pubin -in derived.pub -outform DER | sha256sum) \ <(openssl pkey -pubin -in cosign.pub -outform DER | sha256sum) - 2.
Bundles statt einzelner Signaturen ausliefern
Ein Sigstore-Bundle hält die Signatur und das Material für ihre Prüfung zusammen, was die meisten Verwechslungen vermeidet.
bash # Prefer bundles: signature, verification material and the log entry travel together cosign sign-blob --yes --key release.key --bundle artifact.sigstore.json artifact.txt # uploads to Rekor cosign verify-blob --key release.pub --bundle artifact.sigstore.json artifact.txt
Verwandte Fehler
--certificate-identity or --certificate-identity-regexp is required for verific…Sigstore cosign 2.x/3.x1 package has an invalid registry signature:npm audit signatures (npm 9.5+)gpg: BAD signature from "Release Bot <release@example.com>" [ultimate]GnuPG (gpg --verify, git verify-commit / verify-tag)