Je continue de tester les différentes possibilités offertes par l’utilisation d’un jeu de clés gpg, cette fois dans le domaine de la gestion de code avec git. L’idée consiste à signer ses commits git afin de garantir l’identité de la personne ayant réalisée les modifications.
Première étape, récupérer l’identifiant de sa clé PGP:
gpg --list-secret-keys --keyid-format LONG
Une fois en possession de l’identifiant, on met à jour la configuration git.
git config --global user.signingkey <ID-cle>
Ce qui se traduit par l’ajout suivant dans le fichier de configuration.
[user] signingkey = 069DXXXXXX4A5F7A
Il est ensuite nécessaire d’ajouter le résultat de la commande suivante au niveau de son serveur git. Dans le cas de Github, la configuration s’effectue sur la même page que la page de configuration des clés SSH.
gpg --armor --export <ID-cle>
Passons à la signature à proprement parler. Pour signer un tag, on utilisera l’option -s.
git tag -s v1.5 -m 'my signed 1.5 tag'
Pour signer un commit, on utilisera cette fois l’option -S.
git commit -S -m 'signed commit'
Enfin, pour éviter d’avoir à ajouter en permanence l’option -s ou -S, on pourra configurer git pour toujours signer les tags et les commits.
git config --global commit.gpgsign true git config --global tag.gpgsign true
Étant donné qu’il est possible pour n’importe quel utilisateur de réécrire l’historique d’un dépôt git et de modifier au passage les informations de l’auteur du commit, ou plus simplement, de modifier l’auteur le temps du commit, la signature des opérations git permet de s’assurer de l’identité de la personne ayant effectué l’opération et de se prémunir contre une éventuelle tentative d’usurpation d’identité (à condition que la clé ne soit pas compromise).