Message d’erreur
invalid signature when validating ASN.1 encoded signature
Également affiché sous la forme
- 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
Affiché sous la forme « Error: … », puis à nouveau sous la forme « error during command execution: … ». Avec un bundle (`--bundle`), cosign 3 ajoute le préfixe « failed to verify signature: could not verify message: ». Les signatures au format IEEE P1363 échouent avec « …when validating IEEE_P1363 encoded signature ». Le texte principal est le même dans cosign 2.6 et 3.1.
Sigstore cosign (verify-blob / verify with --key) — sigstore-go signature verifier
Ce que cela signifie
cosign a vérifié la signature ECDSA (encodée en DER/ASN.1, d’où la formulation) du condensat de l’artefact avec la clé publique que vous avez fournie, et elle ne correspond pas. Soit la clé n’est pas celle qui a signé, soit l’artefact diffère de ce qui a été signé. Contrairement à la vérification sans clé, ni les identités ni le journal de transparence n’entrent en jeu : c’est la vérification brute de la signature qui échoue.
Pourquoi cela se produit
Vérification avec la mauvaise clé publique
fréquenteUne clé d’un autre projet, d’un autre environnement ou d’une autre ligne de versions ; ou une clé remplacée lors d’une rotation alors que d’anciennes signatures sont encore vérifiées.
L’artefact n’est pas celui qui a été signé
fréquenteUn binaire recompilé, une archive recompressée, un fichier téléchargé via un proxy qui l’a modifié, ou un texte dont les fins de ligne ont été converties.
Fichier de signature d’un autre artefact
occasionnelleDes fichiers `.sig` de plusieurs plateformes (`linux-amd64`, `darwin-arm64`…) mélangés au téléchargement ou dans un script de publication.
Comment corriger l’erreur
- 1.
Comparer le condensat et la clé
Comparez le SHA-256 de l’artefact au condensat publié, et la clé publique à celle dérivée de la clé de signature.
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.
Distribuer des bundles plutôt que des signatures isolées
Un bundle Sigstore regroupe la signature et le matériel de vérification, ce qui évite la plupart des confusions.
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
Erreurs associées
--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)