Par Anonyme (non vérifié) , 29 avril 2026

Pourquoi signer

Un commit signé atteste cryptographiquement que "ce commit a été créé par le détenteur de cette clé, sans changement depuis la signature." Les signatures défendent contre l'usurpation et l'altération, et des plateformes comme GitHub affichent un badge "Verified" quand la signature correspond à une clé configurée.

Configuration unique

gpg --full-generate-key       # choisir RSA 4096 ou Ed25519
gpg --list-secret-keys --keyid-format=long
git config --global user.signingkey 0xABCDEF1234567890
git config --global commit.gpgsign true
git config --global tag.gpgsign true
gpg --armor --export 0xABCDEF1234567890

Signer à la demande

git commit -S -m "Changement important"
git tag -s v1.0.0 -m "Release 1.0.0"
git log --show-signature
git verify-commit <sha>
git verify-tag v1.0.0

GPG agent et pinentry

# ~/.gnupg/gpg-agent.conf
default-cache-ttl 28800
max-cache-ttl 86400
pinentry-program /usr/local/bin/pinentry-mac

Clés matérielles

YubiKey ou tokens similaires peuvent contenir la clé de signature GPG, exigeant un toucher par commit.

WSL et SSH

Si vous signez depuis WSL ou via SSH, configurez correctement le forwarding de l'agent. Définissez GPG_TTY=$(tty).

Erreurs courantes

Définir commit.gpgsign true sans agent fonctionnel fait que chaque git commit bloque sur un pinentry. Oublier de publier votre clé publique sur la plateforme laisse des badges "Unverified". Les clés expirent.

Vérifier un push remote

git push --signed