Stack Labs Blog moves to Dev.to | Le Blog Stack Labs déménage sur Dev.to 🚀
Gérer ses clefs GPG sous MacOS avec Keybase.io
Temps de lecture estimé : 4 minutes
J’ai reçu récemment ma nouvelle machine, un zouli 💙 MacBookPro. Lorsque j’ai dû gérer ma clef GPG pour Github/Gitlab… je me suis rendu compte qu’en créer (encore) une nouvelle n’était pas la meilleure idée du monde…
Dans cet article, l’on va voir comment créer/configurer sa (ses) machine(s) pour utiliser une clef GPG afin de signer ses commits avec l’aide de Keybase.io qui permet de synchroniser les clefs entre différentes machines.
Prérequis
Afin d’exécuter les tâches suivantes, il faut avoir:
- un compte sur le service Keybase.io
- le gestionnaire de paquets
brew
sur sa machine
Installation
Comme tout bon tutoriel, on passe par l’étape d’installation. Dans votre terminal préféré, veuillez saisir les commandes suivantes :
$ brew cask install keybase gpg-suite
Cela installera le client GPG-ToolSuite et Keybase. Chacun donne accès aux outils en lignes de commande gpg
et keybase
🚀.
Création de la clef GPG
La commande suivante va permettre de générer une clef GPG qui peut être associée à plusieurs comptes mails (dans mon cas, mon @gmail
, mon @stack-labs.com
et enfin @monclient.com
)
PS: N’oubliez pas de lancer l’application Keybase sur votre mac avant…
$ keybase pgp gen --multi
Je vous laisse donc répondre aux différentes questions posées…
$ keybase pgp gen --multi
# Enter your real name, which will be publicly visible in your new key: John Doe
# Enter a public email address for your key: john.doe@gmail.com
# Enter another public email address for your key: john.doe@maboite.com
# Enter another public email address for your key: john.doe@monclient.com
# Enter another email address (or <enter> when done):
# Push an encrypted copy of your new secret key to the Keybase.io server? [Y/n] Y
# ▶ INFO PGP User ID: John Doe <john.doe@gmail.com> [primary]
# ▶ INFO Generating primary key (4096 bits)
# ▶ INFO Generating encryption subkey (4096 bits)
# ▶ INFO Generated new PGP key:
# ▶ INFO user: John Doe <john.doe@gmail.com>
# ▶ INFO user: John Doe <john.doe@maboite.com>
# ▶ INFO user: John Doe <john.doe@monclient.com>
# ▶ INFO 4096-bit RSA key, ID CA8BA8E6E820EE00, created 2018-04-09
# ▶ INFO Exported new key to the local GPG keychain
N’oubliez pas de définir votre user.name
et surtout user.email
qui doit correspondre à l’un des mails saisie plus haut… Sinon, tappez les commandes suivantes :
$ git config --global user.email john.doe@gmail.com
$ git config --global user.name john doe
Configurer Git pour utiliser votre clef GPG
$ gpg --list-secret-keys --keyid-format LONG
/Users/john/.gnupg/pubring.kbx
-------------------------------
sec rsa4096/CA8BA8E6E820EE00 2018-04-09 [SC] [expire : 2034-04-05]
283191A5B089DED03883EB15CA8BA8E6E820EE00
uid [ inconnue] John Doe <john.doe@gmail.com>
uid [ inconnue] John Doe <john.doe@maboite.com>
uid [ inconnue] John Doe <john.doe@monclient.com>
ssb rsa4096/84603F5E724D9FE0 2018-04-09 [E] [expire : 2034-04-05]
Votre clef est représentée ici par le (long) identifiant 283191A5B089DED03883EB15CA8BA8E6E820EE00, donc copiez le, nous en aurons besoin à de multiples reprise. A partir de cela, l’on peut exécuter les commandes suivantes:
$ git config --global user.signingkey 283191A5B089DED03883EB15CA8BA8E6E820EE00
$ git config --global commit.gpgsign true
Il est maintenant nécessaire d’inclure la clef (public) GPG sur votre outil préféré. Pour cela il faut lancer la commande suivante :
$ keybase pgp export -q 283191A5B089DED03883EB15CA8BA8E6E820EE00 | pbcopy
Vous n’aurez plus qu’à coller la clef publique dans la page de gestion des clefs:
Configurer l’environement
Afin que l’on ne vous demande pas votre passphrase à chaque utilisation, via la ligne de commande ou votre IDE favori, il est nécessaire d’effectuer les tâches suivantes.
Ouvrez le fichier ~/.gnupg/gpg.conf
pour y ajouter à la fin (toujours avec la valeur précédemment utilisée comme paramètre) :
default-key 283191A5B089DED03883EB15CA8BA8E6E820EE00
no-tty
Puis associez l’outil de gestion gpg
à votre git globale :
$ git config --global gpg.program /usr/local/bin/gpg
Il faut ensuite lier votre clef GPG à votre trousseau système, pour cela, il faut se rendre dans les paramètres de l’application (via le panneau de préférences système)
Puis sélectionnez GPG Suite
et sélectionnez dans cette fenêtre votre clef GPG et cochez Store in MacOS Keychain
si cela n’est pas déjà fait…
Récupération de la clef sur une autre machine
Le but d’utiliser Keybase.io est de pouvoir avoir un seul “lieu” contenant cette clef et de la synchroniser entre vos différentes machines.
Pour cela, il est nécessaire tout d’abord de lister les clefs disponibles sur votre Keybase:
Entrez les commandes suivantes afin d’importer la clef publique et la clef privée :
$ keybase pgp export -q 283191A5B089DED03883EB15CA8BA8E6E820EE00 | gpg --import
$ keybase pgp export -q 283191A5B089DED03883EB15CA8BA8E6E820EE00 --secret | gpg --allow-secret-key-import --import
Pour finir, vérifiez que tous les autres paramètres décrits dans la phase d’installation ci-dessus sont respectés (configuration de git, de l’outil GPG-Suite…)
Conclusion
Voilà, vous êtes maintenant capable de signer vos commits sur Github, Gitlab & cie !
Vous pouvez vérifier la présence de ce badge, généralement présenté dans la liste des commits de l’interface web de votre plateforme préférée.