Firmar tus commits con GPG (GNU Privacy Guard)
1. Generar una clave GPG
gpg --full-generate-key¿Por qué?
Este comando genera un nuevo par de claves GPG (pública y privada).
Opciones recomendadas:
- Tipo: RSA y RSA
- Tamaño: 4096 bits (más seguro)
- Expiración: Puedes elegir 1 año o indefinido
- Nombre y correo: deben coincidir exactamente con los que usas en Git
2. Listar tus claves GPG
gpg --list-secret-keys --keyid-format=long¿Por qué?
Para obtener el ID de la clave que usaremos con Git.
¿Qué buscar?
Una salida como esta:
/home/user/.gnupg/secring.gpg
------------------------------------
sec 4096R/6BF8308AAAABEA3A 2025-11-29La parte después del slash (/) es tu clave: 6BF8308AAAABEA3A → la necesitaremos más adelante.
3. Configurar Git para firmar automáticamente
Si ya tenías configuraciones previas que interfieren (como SSH):
git config --global --unset gpg.formatAhora agrega tu clave:
git config --global user.signingkey TU_CLAVE_ID(Ejemplo: 6BF8308AAAABEA3A)
Habilita el firmado automático:
git config --global commit.gpgSign trueAsegura que Git use gpg:
git config --global gpg.program gpgConfigura tu nombre y correo:
git config --global user.name "Tu Nombre"
git config --global user.email "tu-correo@example.com"Importante: Asegúrate de que este correo coincida con el de la clave GPG y el usado en GitHub.
4. Exportar tu clave pública (para añadirla a GitHub)
gpg --armor --export tu-correo@example.com¿Por qué?
Esto genera tu clave pública en texto plano, la cual puedes subir a tu cuenta de GitHub en:
Settings → SSH and GPG Keys → New GPG Key
5. Verifica que Git está firmando correctamente
Haz un commit sin usar -S manualmente. Luego verifica con:
git log --show-signatureDeberías ver algo como:
gpg: Firmado el Sat Nov 29 14:57:12 2025 CST
gpg: usando RSA clave A3F9D21C7B8E44F119C52EA0D7F4419B3E6A8F12
gpg: Imposible comprobar la firma: No hay clave pública
6. Ver configuración actual (opcional)
git config --global --listTe mostrará algo similar a:
user.name=yourUserName
user.email=tu-correo@example.com
user.signingkey=6BF8308AAAABEA3A
commit.gpgSign=true
gpg.program=gpg