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

Pourquoi signer

Les champs auteur et committer de Git sont des métadonnées non authentifiées — n'importe qui peut prétendre être qui que ce soit.

Trois backends de signature

  • GPG - traditionnel.
  • SSH - réutilise votre clé SSH (Git 2.34+).
  • X.509 / S/MIME - pour les entreprises avec PKI.

Signature SSH (recommandée)

git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign true
git config --global tag.gpgsign true
echo "[email protected] $(cat ~/.ssh/id_ed25519.pub)" \
  >> ~/.config/git/allowed_signers
git config --global gpg.ssh.allowedSignersFile ~/.config/git/allowed_signers

Signature GPG

gpg --full-generate-key
gpg --list-secret-keys --keyid-format=long
git config --global user.signingkey 3AA5C34371567BD2
git config --global commit.gpgsign true
gpg --armor --export 3AA5C34371567BD2

Signer des commits existants

git commit --amend --no-edit -S
git rebase -i <base> --exec 'git commit --amend --no-edit -S'

Vérifier les signatures

git log --show-signature
git verify-commit HEAD
git verify-tag v1.4.0

Forcer les signatures

La protection de branche peut requérir des commits signés avant le merge.

Tags signés pour releases

git tag -s v1.4.0 -m "Release 1.4.0"
git tag -v v1.4.0

Hygiène de gestion de clés

  • Utilisez ed25519 (ou RSA 4096+).
  • Protégez avec une passphrase et un agent.
  • Roulez les clés annuellement.
  • Stockez les clés sur du matériel pour haute sécurité.