Mensagem de erro
invalid signature when validating ASN.1 encoded signature
Também aparece 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
Impresso como “Error: …” e de novo como “error during command execution: …”. Com um bundle (`--bundle`), o cosign 3 acrescenta o prefixo “failed to verify signature: could not verify message:”. Assinaturas na forma IEEE P1363 falham com “…when validating IEEE_P1363 encoded signature”. O texto principal é o mesmo no cosign 2.6 e no 3.1.
Sigstore cosign (verify-blob / verify with --key) — sigstore-go signature verifier
O que significa
O cosign verificou a assinatura ECDSA (em codificação DER/ASN.1, daí o texto da mensagem) sobre o digest do artefato com a chave pública que você forneceu, e ela não correspondeu. Ou a chave não é a que assinou, ou o artefato difere do que foi assinado. Ao contrário da verificação keyless, aqui não entram identidades nem o log de transparência — é a verificação pura da assinatura que falha.
Por que acontece
Verificação com a chave pública errada
comumUma chave de outro projeto, ambiente ou linha de versões; ou uma chave que passou por rotação enquanto assinaturas antigas ainda estão sendo verificadas.
O artefato não é o que foi assinado
comumUm binário recompilado, um arquivo compactado que foi recompactado, um arquivo baixado por um proxy que o alterou ou um texto com as terminações de linha convertidas.
Arquivo de assinatura de outro artefato
ocasionalArquivos `.sig` de várias plataformas (`linux-amd64`, `darwin-arm64`…) trocados durante o download ou em um script de release.
Como corrigir
- 1.
Comparar o digest e a chave
Compare o SHA-256 do artefato com o digest publicado e a chave pública com a derivada da chave de assinatura.
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 em vez de assinaturas avulsas
Um bundle Sigstore mantém juntos a assinatura e o material de verificação, o que evita a maioria das trocas.
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
Erros 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)