Stack Labs Blog moves to Dev.to | Le Blog Stack Labs déménage sur Dev.to 🚀

11 avril 2018 | Devops | Kevin Davin

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)

gpg in preferences

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…

gpg preferences

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.

badge secured