Firmar Commits de GitHub con GPG en MacOS — Rápido y Fácil

Guillermo Farías Pavez
lemontech-engineering
3 min readJul 2, 2021

La identidad digital no es difícil vulnerar y nuestros repositorios no están exentos de amenazas. Validar que somos nosotros y no un impostor al momento de subir nuestros cambios (nuestro trabajo 👨🏻‍💻) con llaves GPG es una manera efectiva de asegurar nuestra identidad.

¿Para qué hacer esto?

Firmar tu trabajo, porque no solo sirve para los commits, es una manera de decirle al repositorio que tu trabajo está 100% hecho por ti y no otra persona en otro equipo que usa tu cuenta.

GPG vs SSH

Si ya tengo mi cuenta validada con SSH, entonces ¿por qué usar GPG? 🤔

No es un VS, se usan para cosas distintas.

Cuando te autenticas en GitHub con tu llave SSH, solo hace que Github te dé acceso por el momento, pero no se hace parte del repositorio.

Cuando firmas un trabajo con GPG, esa firma se hace parte del repositorio y todos los que clonen tendrán la copia firmada, recuerda que lo lindo de una firma es que se puede comprobar, entonces otro miembro del equipo puede verificar si la firma es real o el repositorio local fue alterado.

Partamos 🚀

1. Requisitos ✅

  1. ✉️ Tener verificado el email en Github
  2. 👨🏻‍🔧 tener configurado el usuario y email en git local

2. Instalar GPG 🍺🍏

brew install gpg

verifica la instalación con gpg --version

3. Generar llave 🔐

gpg --full-generate-key

Debes seguir los pasos, no es complicado pero recuerda crear una llave 4096

4. Obtener llave generada 📄

gpg --list-secret-keys --keyid-format=long

Esto te entregará un listado con las llaves que tienes registradas en tu equipo

Para imprimir 🖨 la llave pública por terminal debes copiar el identificador de la llave

gpg --armor --export 42A859E65CE1054A747EE51XXXXXXXXXXXXXXXXXX

puedes verificar si todo va bien con echo "test" | gpg --clearsign, este comando firma un mensaje y lo verifica

5. Importar llave a Github 🔑🐈‍⬛🐙

Github tiene documentada la manera de hacerlo y es tan sencillo que no vale la pena hacerlo acá

6. Configurar llave en git local 💻

Este comando es opcional, lo que hace es establecer de manera global que todos tus commits vayan firmados.

git config --global commit.gpgsign true

Si no deseas hacer esto, en cada commit tendrás que agregar el flag -S que indica firmar el mensaje git commit -S -m "Mensaje"

Hasta aquí debería funcionar sin problemas, en caso de que tengas mas de una llave GPG, debes indicar a git cuál será la que usará para firmar

git config --global user.signingKey 42A859E65CE1054A747EE514XXXXXXXX

Eso es todo 🥳 prueba subiendo cambios a tu repo y ahora GitHub te premiará con un lindo bagde en cada commit

--

--