Skip to content

Instantly share code, notes, and snippets.

@andrebras
Forked from webframp/keybase.md
Last active April 6, 2021 21:21
Show Gist options
  • Save andrebras/5fe3f3c9aceb21ff3e20f3c12bc25637 to your computer and use it in GitHub Desktop.
Save andrebras/5fe3f3c9aceb21ff3e20f3c12bc25637 to your computer and use it in GitHub Desktop.
Signing git commits on github using keybase.io gpg key

Setup Keybase (& import key)

Install Keybase: https://keybase.io/download and Ensure the keybase cli is in your PATH

First get the public key

keybase pgp export | gpg --import

Next get the private key

keybase pgp export --secret | gpg --allow-secret-key --import

Verify progress:

gpg --list-secret-keys

Looks for something like

sec   4096R/C9D8E1A1 2017-02-16 [expires: 2033-02-12]
uid                  Sean Escriva <sean.escriva@gmail.com>
ssb   4096R/CC67212E 2017-02-16

The email address should match your Github email.

The C9D8E1A1 part is what you need next. By default this key is untrusted, so we'll fix that. To edit trust:

$ gpg --edit-key C9D8E1A1
gpg> trust
Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

Your decision? 5
Do you really want to set this key to ultimate trust? (y/N) y

There are many levels of trust so choose what you're comfortable with.

$ git config --global user.signingkey C9D8E1A1
$ git config --global commit.gpgsign true

Now add it to your Github profile:

gpg --armor --export C9D8E1A1 | xclip

Add it to your GitHub profile under Settings/SSH and GPG keys. Replace xclip with clip or pbcopy for your current platform.

Setup gpg-agent

Use gpg agent if you don't want to enter the password every time.

brew install gpg-agent pinentry-mac

Modify your gpg agent config

# ~/.gnupg/gpg-agent.conf

# Connects gpg-agent to the OSX keychain via the brew-installed
# pinentry program from GPGtools. This is the OSX 'magic sauce',
# allowing the gpg key's passphrase to be stored in the login
# keychain, enabling automatic key signing.
pinentry-program /usr/local/bin/pinentry-mac

Modify your gpg config

# ~/.gnupg/gpg.conf

use-agent
default-key XXXXXXXXXXXX

View signed commits with : git log --show-signature -1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment