エラーメッセージ
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 エンコードのため、このような文言になります)を検証しましたが、一致しませんでした。鍵が署名に使われたものではないか、アーティファクトが署名されたものと異なるかのどちらかです。キーレス検証とは異なり、ID や透明性ログは関係しません。署名そのものの検証が失敗しています。
発生する理由
誤った公開鍵で検証している
よくある別のプロジェクト、環境、リリース系列の鍵を使っている場合や、古い署名の検証がまだ続いているのに鍵がローテーションされた場合です。
アーティファクトが署名されたものではない
よくある再ビルドしたバイナリ、再圧縮したアーカイブ、内容を書き換えるプロキシ経由でダウンロードしたファイル、改行コードが変換されたテキストなどです。
別のアーティファクトの署名ファイル
ときどき複数のプラットフォーム(`linux-amd64`、`darwin-arm64`…)の `.sig` ファイルが、ダウンロード時やリリーススクリプトの中で取り違えられています。
修正方法
- 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)