git verify-commit <commit-hash>
Она проверит подпись и выведет информацию о ней.
git config
с опцией receive.certifySubmoduleCommits
или receive.fsck.badObject
.
Для проверки подписи коммита в Git существует несколько способов, в зависимости от того, как была настроена подпись (GPG, S/MIME или SSH) и какие инструменты доступны.
Эта команда отображает информацию о подписи каждого коммита в логе. Если коммит подписан корректно, покажется информация о статусе подписи (например, "Good signature"). Если подпись недействительна или отсутствует, будет отображено соответствующее сообщение об ошибке.
git log --show-signature -1 <hash_коммита>
Замените <hash_коммита>
на хеш коммита, который вы хотите проверить. Флаг -1
ограничивает вывод информации только об одном коммите.
Эта команда непосредственно проверяет подпись коммита и возвращает статус. Это более компактный способ, чем `git log --show-signature`.
git verify-commit <hash_коммита>
Успешная проверка не возвращает ничего (тихо), а ошибки подписи выдадут соответствующие сообщения. Обратите внимание, что для работы `git verify-commit` необходимо настроить доверенные ключи GPG/S/MIME.
Начиная с Git 2.34, коммиты можно подписывать с использованием SSH-ключей. Проверка происходит аналогичными способами, как и в GPG, но с другим подходом к настройке доверенных ключей.
git log --show-signature -1 <hash_коммита>
git verify-commit <hash_коммита>
Для SSH-подписей необходимо настроить user.signingkey
, который должен соответствовать одному из ваших SSH-ключей, а также настроить gpg.format = ssh
. Вместо GPG keyring Git будет использовать файл ~/.ssh/known_hosts
для определения доверенных ключей.
Для того чтобы Git мог проверить подпись, необходимо иметь настроенные доверенные ключи GPG/S/MIME. Это делается путем импорта публичного ключа подписавшего коммит в ваш GPG keyring (для GPG) или хранилище сертификатов (для S/MIME).
Например, для GPG:
gpg --import <путь_к_публичному_ключу>
После импорта ключа, необходимо указать Git, что вы доверяете этому ключу. Обычно это делается путем редактирования файла `~/.gnupg/trustdb.gpg` (но это устаревший метод). Лучший способ - использовать `git config --global user.signingkey <id_ключа>` для указания ключа, который нужно использовать для подписи, и убедиться, что этот ключ присутствует в вашем GPG keyring и считается доверенным.
Большинство веб-интерфейсов Git (GitHub, GitLab, Bitbucket и т.д.) отображают информацию о статусе подписи коммита непосредственно на странице коммита. Обычно рядом с коммитом можно увидеть значок, указывающий на то, что коммит подписан и подпись является действительной. Это самый простой и наглядный способ проверки, если вы работаете через веб-интерфейс.
Важно: Успешная проверка подписи не гарантирует абсолютной безопасности. Она лишь подтверждает, что коммит был подписан ключом, которому вы доверяете. Необходимо также убедиться, что вы доверяете владельцу ключа и что ключ не был скомпрометирован.