Fehlermeldung
gpg: BAD signature from "Release Bot <release@example.com>" [ultimate]
Auch ausgegeben als
- gpg: BAD signature from "Release Bot <release@example.com>" [unknown]
Die User-ID in Anführungszeichen und die Vertrauensstufe in eckigen Klammern (`[ultimate]`, `[full]`, `[unknown]`) stammen aus deinem Schlüsselbund.
Was der Fehler bedeutet
gpg hatte den öffentlichen Schlüssel des Signierers, hat die Signatur geprüft, und die Prüfung ist fehlgeschlagen: Die Daten sind nicht das, was der Schlüsselinhaber signiert hat. Anders als bei „No public key“ ist das ein eindeutig negatives Ergebnis – die Datei oder das Objekt wurde nach dem Signieren verändert, oder die Signatur gehört zu anderen Daten. Behandle den Inhalt als nicht vertrauenswürdig. Das Wort in eckigen Klammern ist deine Vertrauensstufe für den Schlüssel, nicht Teil des Urteils.
Warum der Fehler auftritt
Die Daten wurden nach dem Signieren verändert
häufigEin manipulierter Download, eine bearbeitete Prüfsummendatei oder ein Commit-Objekt, das ohne erneutes Signieren umgeschrieben wurde. Genau das soll die Signatur aufdecken.
Zeilenenden oder Kodierung wurden konvertiert
häufig`autocrlf` von Git, FTP im ASCII-Modus oder ein Editor, der einen abschließenden Zeilenumbruch anfügt, verändern die Bytes von Textdateien, und eine abgetrennte Signatur über die ursprünglichen Bytes passt nicht mehr.
Signatur und Datei gehören nicht zusammen
gelegentlichEine `.asc`-Datei aus einem Release, die gegen die Datei eines anderen Releases geprüft wird, oder eine Signatur für den Tarball, die gegen die Prüfsummendatei geprüft wird.
So behebst du den Fehler
- 1.
Beide Dateien neu beschaffen und erneut prüfen
Lautet das Ergebnis auch bei Dateien, die du über einen vertrauenswürdigen Kanal bezogen hast, weiterhin BAD, verwende den Inhalt nicht und benachrichtige den Herausgeber.
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.
Signierte Textdateien vor Konvertierung schützen
Markiere Signatur- und Prüfsummendateien in `.gitattributes` als binär, damit die Konvertierung der Zeilenenden sie nie anrührt.
text # .gitattributes: never convert line endings of signed files *.asc -text *.sig -text SHA256SUMS -text
Verwandte Fehler
gpg: Can't check signature: No public keyGnuPG (gpg --verify, git verify-commit / verify-tag / log --show-signature)Signature verification failed: incorrect signatureOpenSSH ssh-keygen -Y verify (SSHSIG)invalid signature when validating ASN.1 encoded signatureSigstore cosign (verify-blob / verify with --key)