Сообщение об ошибке
gpg: BAD signature from "Release Bot <release@example.com>" [ultimate]
Также выводится как
- gpg: BAD signature from "Release Bot <release@example.com>" [unknown]
Идентификатор пользователя в кавычках и уровень доверия в квадратных скобках (`[ultimate]`, `[full]`, `[unknown]`) берутся из вашей связки ключей.
Что это означает
У gpg был открытый ключ подписанта, gpg проверил подпись, и проверка не прошла: данные не совпадают с тем, что подписал владелец ключа. В отличие от «No public key», это окончательный отрицательный результат — файл или объект изменили после подписания, или подпись относится к другим данным. Считайте содержимое недоверенным. Слово в квадратных скобках — ваш уровень доверия к ключу, а не часть вердикта.
Почему это происходит
Данные изменили после подписания
частоПодменённый скачанный файл, отредактированный файл контрольных сумм или объект коммита, переписанный без повторной подписи. Подпись существует именно для того, чтобы выявлять такое.
Преобразованы концы строк или кодировка
частоПараметр `autocrlf` в Git, FTP в режиме ASCII или редактор, добавляющий перевод строки в конце, меняют байты текстовых файлов, и отделённая подпись, созданная для исходных байтов, больше не совпадает.
Подпись и файл не соответствуют друг другу
иногдаФайлом `.asc` одного релиза проверяют файл другого релиза или подписью tar-архива проверяют файл контрольных сумм.
Как исправить
- 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.
Защитите подписанные текстовые файлы от преобразования
Отметьте файлы подписей и контрольных сумм в `.gitattributes` как двоичные, чтобы преобразование концов строк их никогда не затрагивало.
text # .gitattributes: never convert line endings of signed files *.asc -text *.sig -text SHA256SUMS -text
Связанные ошибки
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)