Сообщение об ошибке
invalid signature when validating ASN.1 encoded signature
Также выводится как
- 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
Выводится как «Error: …» и ещё раз как «error during command execution: …». С бандлом (`--bundle`) cosign 3 добавляет префикс «failed to verify signature: could not verify message:». Подписи в форме IEEE P1363 дают ошибку «…when validating IEEE_P1363 encoded signature». Основной текст в cosign 2.6 и 3.1 одинаков.
Sigstore cosign (verify-blob / verify with --key) — sigstore-go signature verifier
Что это означает
cosign проверил подпись ECDSA (закодированную в DER/ASN.1, отсюда и формулировка) над дайджестом артефакта с помощью указанного вами открытого ключа, и подпись не сошлась. Либо подписывали не этим ключом, либо артефакт отличается от подписанного. В отличие от проверки без ключа, удостоверения и журнал прозрачности здесь ни при чём — не прошла сама криптографическая проверка подписи.
Почему это происходит
Подпись проверяется не тем открытым ключом
частоКлюч другого проекта, окружения или ветки релизов либо ключ после ротации, когда старые подписи всё ещё проверяются.
Артефакт не тот, что подписывали
частоПересобранный бинарный файл, заново сжатый архив, файл, скачанный через прокси, который его изменил, или текст с преобразованными окончаниями строк.
Файл подписи от другого артефакта
иногдаФайлы `.sig` для нескольких платформ (`linux-amd64`, `darwin-arm64`…), перепутанные при скачивании или в скрипте релиза.
Как исправить
- 1.
Сравните дайджест и ключ
Сверьте SHA-256 артефакта с опубликованным дайджестом, а открытый ключ — с ключом, полученным из ключа подписи.
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.
Публикуйте бандлы вместо отдельных подписей
Бандл Sigstore хранит подпись вместе с материалами для проверки, и это в большинстве случаев исключает путаницу.
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
Связанные ошибки
--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)