Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Firmas de seguridad

36/53
Recursos

GPG permite identificar, sin lugar a dudas, de quién proviene un commit; añade una capa adicional de seguridad a Git para prevenir ““caballos de troya””.

Gitlab despliega un banner junto a los commits para mostrar que dichos commits están verificados.

Aportes 21

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

En el minuto 7:45 al parecer en la edición se les olvidó colocar la parte donde se obtiene la llave pública, el comando es:

gpg --armor --export mail@gmail.com > key.pub```

En esta clase faltó indicar que para que el commit sea firmado con el GPG es necesario agregar la opción “-S” en el commit, sino realiza un commit normal. Ej.:

git commit -S -am "Este es un commit firmado con GPG"```

**Instalación de GPG en macOS **

-Isntalar el manejador de paquetes para Mac Homebrew

  1. Abrir la terminal y ejecutar el siguiente comando:
    ** /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”**

  2. Ahora Homebrew solo es una copia superficial para traer la historia completa ejecutamos el siguiente comando:
    git -C “$(brew --repo homebrew/core)” fetch --unshallow

  3. Una ves actualizado nuestro manejador de paquetes instalamos gpg con el siguiente comando:
    brew install gpg

  4. Para verificar que se ha instalado correctamente podemos ejecutar el siguiente comando:
    which gpg, y debería devolvernos la ruta del directorio donde fue instalada por ej: /usr/local/bin/gpg

Para obtener la llave publica :
Pega el siguiente texto sustituyendo el ID de la llave GPG que deseas usar. En este ejemplo, el ID de la llave GPG es 3AA5C34371567BD2:

$ gpg --armor --export 3AA5C34371567BD2# Imprime la llave GPG, en formato ASCII armor

Generating a GPG key
Todos los pasos de esta clase:
https://gitlab.com/help/user/project/repository/gpg_signed_commits/index.md

Les comparto este tutorial que cree basado en está clase.

Para aquellos que quieran instalar pinentry mac:

brew install pinentry-mac``` 

Recuerden que primero tinen que instalar brew 

Recuerden pasar el parámetro -S a los commits para que tengan la firma digital

git commit -S -m "Esto es un commit"

My summary:

# know if gpg is installed
which gpg

# install gpg with brew
brew install gpg

# installa pineentry mac (pgp handler)
brew install pinentry-mac

# generate key
gpg --full-gen-key
# 1. select algorith (RSA and RSA for default)
# 2. select keysize (the longer the better)
# 3. specify key time validation (1 year could be fine)
# 4. Fill out your personal data. Email must the same as your GitLab account mail

# list keys
# GPG key ID -> that starts with sec i.e. rsa4096/<GPG-key-ID>
gpg -k --keyid-format LONG
gpg --list-secret-key --keyid-format LONG
gpg --list-secret-key --keyid-format LONG <your-email>

# export the public key and add to GitLab (User Settings > GPG Keys)
gpg --armor --export <GPG-key-ID> | pbcopy

# configure git to use the public key to sign commits
git config --global user.signingkey <GPG-key-ID>
git config --global gpg.program gpg

# commit with -S flag to sign
git commit -S -m "My signed commit"

# or tell Git to sign your commits automatically
git config --global commit.gpgsign true


# DELETE GPG KEYS

# first delete private key
gpg --delete-secret-key key-ID

# then delete public key
gpg --delete-key key-ID 
  • Llaves de seguridad GPG nos permiten firmar los commit que realiza un dev. y es un capa adicional de identificación.
  • Con la firma de los commit evitamos los caballo de troya en el código, agregando un capa extra de seguridad.
  • Los commits firmados con llaves GPG tienen una etiqueta adicional de verified.
# para generar llave de seguridad.
gpg --full-gen-key
#mostar las llaves generadas
gpg --list-secret-key --keyid-format LONG <correo>
#exportar la llave pública
gpg --armor --export key_id
#configar la llave en git
git config --global user.signingkey key_id
git config --global gpg.program gpg

Normalmente las llaves gpg deben de expirar en un año.

  • El correo que se usa en la generación de llaves gpg debe ser el mismo que se usa en gitlab.
  • Para añadir las llaves GPG en Gitlab Setting/GPG keys.

Por favor pongan su correo… jajaja…

Si llegan a el siguiente problema generando las llaves gpg:

Es un problema de permisos, se soluciona cambiando el usuario y grupo de la carpeta ~/.gnupg:

sudo chown -R myuser:myuser ~/.gnupg

Buenas tardes, tiene alguien quien facilite para su uso en Windows?

Aqui un resument en medium que encontre por ahi… https://medium.com/@jma/setup-gpg-for-git-on-macos-4ad69e8d3733

Para generar las claves si o si tenemos que usar GPG de linux? o hay un GPG para windows.

Si les falla la opción --full-gen-key, pueden usar --gen-key.

Hola tengo una duda, yo he podido firmar mis commit sin problemas. Ahora. ¿Existe alguna forma de controlar que nadie pueda dar commit en mi pc si los mismos no están firmados? La cuestión esta que si no ponemos el prefijo -S, el commit se va sin firmar, por ejemplo, yo utilizo el IDE Intellij para dar los commit y este por defecto no aplica el prefijo -S, por lo que todos los commit que haga usando le GUI del IDE no van a estar firmados.

Un dato, si al aplicar un commit les manda este error:

 git commit -S -m "test gpg"
error: gpg failed to sign the data
fatal: failed to write commit object

exporten la variable GPG_TTY

export GPG_TTY=$(tty)

Con esto les pedirá la passphrase de sus gpg y funcionara su commit.

Para dejarlo permanente, agregen la variable al .bash_profile de su usuario.

Acá una guía del paso a paso de la configuración de SSH y de GPG.

Para los que usan Mac y Brew, la instalación del package gnupg:

brew install gnupg

yo uso syspeace y rdp guard para la seguridad de mis servidores

Para los que quieran usar la gpg en windows descargen de aca el gpg https://www.gpg4win.org/ y luego en el command pront de windows podran seguir los pasos.
Si es sale error al hacer el commit usen este comando para indicar la ruta de instalacion del gpg, para saber la ruta de instalacion usen “where gpg”. con eso ya les deberia funcionar en windows

git config --global gpg.program "/c/Program Files/Git/usr/bin/gpg.exe"