Resumen
Proteger la autoría de tu código es clave para evitar suplantaciones y riesgos. Con llaves PGP/GPG puedes firmar commits y lograr que GitLab muestre el distintivo Verified, confirmando que el autor eres tú y no alguien que clonó tu nombre y correo. En equipos abiertos y proyectos open source, esta verificación marca la diferencia.
¿Por qué firmar commits con PGP en GitLab importa?
Firmar con PGP añade una capa de autenticación basada en criptografía: una llave privada firma el commit y la llave pública en GitLab lo valida. Así se evita que cualquiera configure un nombre y correo falsos y firme a tu nombre.
- Identidad confiable: GitLab muestra el estado Verified junto a cada commit.
- Prevención de suplantación: la firma prueba que el commit proviene de tu llave privada.
- Relevancia en open source: los maintainers pueden aceptar cambios con mayor confianza.
- Complemento en proyectos cerrados: además de los permisos de proyecto y grupo.
¿Cómo generar llaves GPG con buena seguridad?
En Linux, aunque el mecanismo se llama PGP (Pretty Good Privacy), el programa se llama GPG. Primero verifica que lo tienes instalado y luego genera tu llave, eligiendo algoritmo, entropía y expiración. Construye tu identidad con nombre, correo y un comentario descriptivo.
which gpg
GPG full gen key
¿Qué algoritmo y entropía elegir?
Al generar la llave, se elige la opción 1: RCA, que permite firmar y encriptar. Luego define la entropía: 4096 bits para mayor dificultad de comprometer la llave.
- Algoritmo: opción 1, RCA.
- Entropía: 4096 bits para más seguridad.
¿Cómo definir expiración y construir identidad?
Define un periodo de validez: puede ser 1 día, 1 semana, 1 mes o 1 año, usando indicadores como 1, 1W, 1M, 1Y. Evita llaves que nunca expiran; renovar alrededor de un año es una práctica razonable. Asegúrate de que el correo coincida exactamente con el registrado en GitLab.
- Expiración: 1, 1W, 1M, 1Y según necesidad.
- Identidad: nombre, correo y comentario, por ejemplo: test Platzi DevOps GitLab.
- Coincidencia de correo: debe hacer match con GitLab para autenticar commits.
¿Cómo proteger la contraseña de la llave?
Antes de crear la llave, define una contraseña de alta entropía. Usa un manejador de contraseñas y elige una clave larga, con símbolos y caracteres aleatorios. Puedes usar herramientas como Pine Entry Mac, o ingresar la contraseña desde la consola.
- Contraseña robusta: larga, con símbolos y aleatoria.
- Gestor de contraseñas: no la memorices, guárdala segura.
Para revisar tus llaves y obtener el ID largo asociado a tu correo:
List secret keys
# key ID format: long
# filtrar por correo: tu-correo
¿Cómo integrar la llave en GitLab y firmar commits en Git?
En GitLab, ve a Settings y abre GPG Keys para pegar tu llave pública. La pública puede ser conocida por cualquiera, incluso replicada por servidores especializados. La llave privada debes protegerla al máximo.
- En Settings > GPG Keys, pega la llave pública.
- Presiona Add key para registrarla.
Después, configura Git para firmar automáticamente con tu llave. Usa el ID largo obtenido y define el programa GPG que utilizarás (puede ser GPG 2.0 si corresponde a tu entorno):
git config --global user sign in key TU_ID_DE_LA_LLAVE
git config --global GPG Program GPG
# si usas otra versión: GPG 2.0
A partir de aquí, cada vez que hagas un commit, Git pedirá tu contraseña para firmarlo con tu llave privada. Al subirlo a GitLab, se validará con tu llave pública y aparecerá el badge de Verified.
- Firma automática: Git solicita tu contraseña al commitear.
- Validación en GitLab: verificación con tu llave pública.
- Distintivo visible: estado Verified junto al commit.
¿Ya firmas tus commits con PGP en GitLab o tienes dudas puntuales del flujo? Comparte tu experiencia y preguntas en los comentarios.