{{tag>git dev signature sécurité gpg gpg2}} ====== Git : Signer ses travaux ====== Confère le wiki [[dev:git:configuration#definir_la_cle_gpg_pour_signature_du_travail | configuration de git]] pour la mise en place du paramétrage nécessaire à la signature. Pour signer les travaux **git** utilise **gpg** ou **gpg2**. Pour activer la signature systématique des commits, ici l'option de portée **%%--global%%** permet de le définir pour tous les dépôts de l’utilisateur courant: git config --global commit.gpgsign true ===== Signer un commit ===== Si le client git n'est pas configuré pour signer systématiquement les commits, on peut signaler ponctuellement quel commit signer via l'argument **-S**: git commit -S -m "Modifications apportées" ===== Signer un tag ===== Les tags peuvent également être signés, pour cela utiliser l'argument **-s** git tag alpha-0.3 -s -m 'version alpha 0.3' Pour vérifier un tag signé utiliser l'argument -v: git tag -v alpha-0.3 ===== Afficher les informations de signature ===== Par défaut les informations de signature ne sont pas systématiquement affichées. ==== Sur le log ==== Il est possible via la commande **git log** d'ajouter l' option **%%--show-signature%%** affichant les informations de signature: git log --show-signature ==== Sur un commit ==== La commande **git show** permet d'afficher le commit et les informations de signature via l'option **%%--show-signature%%**: # En utilisant un tag git show master --show-signature # En utilisant le SHA de l' objet git show 7554255 --show-signature ===== Vérifier du code signé ===== ==== Vérifier un tag ==== Pour vérifier un tag signé, utiliser l'option **-v**. La vérification s'appuie sur GPG, le trousseau de l'utilisateur doit contenir la clé publique du signataire pour que l' opération puisse aboutir. git tag -v alpha-1.1 ==== Vérification avant fusion ===== A partir de la version 1.8.3 les commandes **git merge** et **git pull** peuvent vérifier et rejeter des commits sans signature appartenant à son réseau de confiance en utilisant l'option **%%--verify-signatures%%**. git merge --verify-signatures non-verify-branch Le merge est une forme de commit, on peut donc le signer via l'option **-S**: git merge --verify-signatures -S signed-branch ===== Références ===== * https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work