Message d’erreur
gpg: BAD signature from "Release Bot <release@example.com>" [ultimate]
Également affiché sous la forme
- gpg: BAD signature from "Release Bot <release@example.com>" [unknown]
L’ID utilisateur entre guillemets et le niveau de confiance entre crochets (`[ultimate]`, `[full]`, `[unknown]`) proviennent de votre trousseau.
Ce que cela signifie
gpg disposait de la clé publique du signataire et a contrôlé la signature, et ce contrôle a échoué : les données ne sont pas celles que le détenteur de la clé a signées. Contrairement à « No public key », il s’agit d’un résultat négatif définitif : le fichier ou l’objet a été modifié après la signature, ou la signature correspond à d’autres données. Considérez le contenu comme non fiable. Le mot entre crochets indique votre niveau de confiance envers la clé ; il ne fait pas partie du verdict.
Pourquoi cela se produit
Les données ont été modifiées après la signature
fréquenteUn téléchargement altéré, un fichier de sommes de contrôle modifié ou un objet commit réécrit sans nouvelle signature. C’est exactement ce que la signature est là pour révéler.
Les fins de ligne ou l’encodage ont été convertis
fréquenteL’option `autocrlf` de Git, un transfert FTP en mode ASCII ou un éditeur qui ajoute un saut de ligne final modifient les octets des fichiers texte, et une signature détachée calculée sur les octets d’origine ne correspond plus.
La signature et le fichier ne vont pas ensemble
occasionnelleUn `.asc` d’une version vérifié avec le fichier d’une autre version, ou une signature de l’archive tar vérifiée avec le fichier de sommes de contrôle.
Comment corriger l’erreur
- 1.
Récupérer à nouveau les deux fichiers et revérifier
Si le résultat reste BAD avec des fichiers obtenus par un canal de confiance, n’utilisez pas le contenu et prévenez l’éditeur.
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.
Protéger les fichiers texte signés contre la conversion
Marquez les fichiers de signature et de sommes de contrôle comme binaires dans `.gitattributes`, afin que la conversion des fins de ligne n’y touche jamais.
text # .gitattributes: never convert line endings of signed files *.asc -text *.sig -text SHA256SUMS -text
Erreurs associées
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)