本文へスキップ
ecdsa.com
GnuPG (gpg --verify, git verify-commit / verify-tag / log --show-signature)Git

エラーメッセージ

gpg: Can't check signature: No public key

別の表記

  • gpg: Can't check signature: no public key

GnuPG 2.4 は「No public key」と出力します。翻訳されたメッセージや古いビルドでは、大文字と小文字の使い方が異なることがあります。Git の検証コマンドは 0 以外の終了ステータスで終了し、gpg の出力をそのまま表示します。

このエラーの意味

オブジェクトは署名されており、gpg は署名を見つけましたが、キーリングに発行者のフィンガープリントと一致する公開鍵がないため、署名が正しいかどうかを判断できません。必要な鍵は、直前の行(「Signature made …」「using … key <fingerprint>」)でわかります。これは署名の検証失敗ではなく、鍵がないだけです。

発生する理由

修正方法

  1. 1.

    信頼できる入手元から鍵をインポートする

    プロジェクトのウェブサイト、リリースノート、または鍵サーバーからインポートし、署名を信頼する前に、別の経路でフィンガープリントを確認してください。

    bash
    # Import the signer's key from a trusted source, then compare the fingerprint out of band
    curl -sSL https://example.com/release-signing-key.asc | gpg --import
    gpg --fingerprint release@example.com
    git verify-commit HEAD
  2. 2.

    プラットフォームが公開している鍵を使う

    GitHub は、各ユーザーが登録した GPG 鍵を `https://github.com/<user>.gpg` で公開しています。

    bash
    # Keys a GitHub user registered for signing (verify the fingerprint before trusting it)
    curl -sSL https://github.com/<user>.gpg | gpg --import

関連するエラー

署名エラーデータベースをすべて見る