跳到主要内容
ecdsa.com
GnuPG (gpg --verify, git verify-commit / verify-tag)Git

错误信息

gpg: BAD signature from "Release Bot <release@example.com>" [ultimate]

也可能输出为

  • gpg: BAD signature from "Release Bot <release@example.com>" [unknown]

引号中的用户 ID 和方括号中的信任级别(`[ultimate]`、`[full]`、`[unknown]`)来自你的密钥环。

含义

gpg 有签名者的公钥,也检查了签名,但检查未通过:数据并不是密钥持有者签名的那份数据。与“No public key”不同,这是一个确定的否定结论——文件或对象在签名后被修改过,或者签名属于其他数据。应把内容视为不可信。方括号中的词是你对该密钥的信任级别,不属于验证结论。

原因

修复方法

  1. 1.

    重新获取两个文件并再次验证

    如果通过可信渠道获取文件后结果仍然是 BAD,就不要使用这些内容,并通知发布者。

    bash
    # Fetch both files again over a verified channel and compare
    sha256sum release.tar.sha256
    curl -sSLO https://example.com/downloads/release.tar.sha256
    curl -sSLO https://example.com/downloads/release.tar.sha256.asc
    gpg --verify release.tar.sha256.asc release.tar.sha256
  2. 2.

    防止已签名的文本文件被转换

    在 `.gitattributes` 中把签名文件和校验和文件标记为二进制(binary),使换行符转换永远不会处理它们。

    text
    # .gitattributes: never convert line endings of signed files
    *.asc  -text
    *.sig  -text
    SHA256SUMS -text

相关错误

浏览完整的签名错误库