Mensaje de error
invalid signature when validating ASN.1 encoded signature
También se muestra como
- 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
Se imprime como «Error: …» y otra vez como «error during command execution: …». Con un bundle (`--bundle`), cosign 3 antepone «failed to verify signature: could not verify message:». Las firmas en formato IEEE P1363 fallan con «…when validating IEEE_P1363 encoded signature». El texto principal es el mismo en cosign 2.6 y 3.1.
Sigstore cosign (verify-blob / verify with --key) — sigstore-go signature verifier
Qué significa
cosign verificó la firma ECDSA (codificada en DER/ASN.1, de ahí el texto del mensaje) sobre el resumen del artefacto con la clave pública que proporcionas, y no coincidió. O bien la clave no es la que firmó, o bien el artefacto es distinto del que se firmó. A diferencia de la verificación keyless, aquí no intervienen identidades ni el registro de transparencia: lo que falla es la comprobación de la firma en sí.
Por qué ocurre
Verificación con la clave pública equivocada
frecuenteUna clave de otro proyecto, entorno o línea de versiones; o una clave que se rotó mientras todavía se verifican firmas antiguas.
El artefacto no es el que se firmó
frecuenteUn binario recompilado, un archivo comprimido que se volvió a comprimir, un archivo descargado a través de un proxy que lo modificó o un texto con los finales de línea convertidos.
Archivo de firma de otro artefacto
ocasionalArchivos `.sig` de varias plataformas (`linux-amd64`, `darwin-arm64`…) que se mezclaron durante la descarga o en un script de publicación.
Cómo solucionarlo
- 1.
Comparar el resumen y la clave
Compara el SHA-256 del artefacto con el resumen publicado y la clave pública con la que se deriva de la clave de firma.
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.
Distribuir bundles en lugar de firmas sueltas
Un bundle de Sigstore mantiene juntos la firma y el material de verificación, lo que evita la mayoría de las confusiones.
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
Errores relacionados
--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)