Firmar Commits de GitHub con GPG en MacOS — Rápido y Fácil
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 ✅
- ✉️ Tener verificado el email en Github
- 👨🏻🔧 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