Importar y renovar una clave GPG caducada
Una clave GPG (también llamadas claves GnuPG) es un método usado para aumentar la seguridad y privacidad de las comunicaciones. Este sistema permite cifrar y/o firmar digitalmente correos electrónicos, certificando el origen o autor y protegiendo su contenido mediante el cifrado de los datos.
En mi caso, mi clave GPG llevaba caducada desde julio de 2016. Esto impedía firmar y cifrar correos, pues durante este tiempo no lo he necesitado.
Puedes leer más sobre GPG/PGP y su gestión en mi entrada: Crear, publicar, firmar y más comandos para gestionar claves GPG en Linux.
A lo largo de la siguiente entrada mostraré como añadir una clave GPG en Linux y como cambiar el vencimiento de una llave GPG caducada o expirada.
Índice de contenido
Buscar clave pública GPG en keyservers
Las claves públicas GPG o PGP se almacenan en servidores de claves o keyservers. En Debian, el servidor de intercambio de claves por defecto es keys.gnupg.net, que también dispone también de una interfaz web para realizar las búsquedas y consultar información.
En la búsqueda podemos utilizar cualquier campo: nombre, apellidos, dirección de correo electrónico o ID de la clave.
1 2 3 4 5 |
nano@satellite:~$ gpg --search-key evarist*** gpg: buscando "evarist***" de hkp servidor keys.gnupg.net (1) Evaristo García Zambrana <evarist***@gmail.com> 4096 bit RSA key 85268F85, creado: 2015-11-19, caduca: 2016-07-17 (caducada) Keys 1-1 of 1 for "evarist***". Introduzca número(s), O)tro, o F)in >q |
El resultado que se devuelve corresponde a la clave pública 85268F85 que fue creada en noviembre de 2015 y aparece como caducada desde julio de 2016.
Ha sido consultada en el servidor de keys.gnupg.net. Existen otros servidores conocidos como el de RedIRIS (pgp.rediris.es) o el del MIT (pgp.mit.edu).
Importar clave privada GPG en Debian
Para gestionar una llave GPG, necesitamos la clave privada o clave secreta que se creó conjuntamente con la clave pública. Sin la clave secreta no podremos firmar ni cifrar correos, tampoco modificar su fecha de vencimiento o realizar un certificado de revocación. También necesitamos la contraseña con la que fue protegida la clave.
Es importante tener muy en cuenta esto, porque no existe ningún mecanismo de recuperación. Nada del estilo «He olvidado mi contraseña».
Ubicados en el directorio donde se encuentra nuestra clave privada, que puede tener extensión .key, ejecutamos su importación con gpg --import nombre.gpg
1 2 3 4 5 6 7 |
nano@satellite:~$ gpg --import private.gpg gpg: clave 85268F85: clave secreta importada gpg: clave 85268F85: "Evaristo García Zambrana <evarist***@gmail.com>" sin cambios gpg: Cantidad total procesada: 1 gpg: sin cambios: 1 gpg: claves secretas leídas: 1 gpg: claves secretas importadas: 1 |
Podemos comprobar que se ha importado correctamente en nuestro sistema con el comando gpg --list-secret-keys
1 2 3 4 5 6 |
nano@satellite:~$ gpg --list-secret-keys /home/nano/.gnupg/secring.gpg ----------------------------- sec 4096R/85268F85 2015-11-19 [caduca: 2016-07-17] uid Evaristo García Zambrana <evarist***@gmail.com> ssb 4096R/13B69DCC 2015-11-30 |
Renovar o ampliar expiración de clave PGP
Como he comentado, para cambiar la fecha de vencimiento de una clave GPG es necesario disponer de la clave privada de esta y conocer la contraseña, en caso de que la tenga.
A raíz de ahí, será posible ampliar la fecha de expiración de la clave (incluso si esta aún no ha caducado) con el fin de poder seguir haciendo uso de la clave PGP para firmar y cifrar.
El primer paso será editar la llave con el comando gpg --edit-key 85268F85
donde nuevamente podremos ver que la llave caducó.
Se lista la clave pública con ID 85268F85 (identificada con pub al comienzo de la línea) y la subclave 13B69DCC (identificada con sub al comienzo de la línea), que es la que uso para cifrar.
1 2 3 4 5 6 7 8 9 10 11 |
nano@satellite:~$ gpg --edit-key 85268F85 gpg (GnuPG) 1.4.18; Copyright (C) 2014 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Clave secreta disponible. pub 4096R/85268F85 creado: 2015-11-19 caducó: 2016-07-17 uso: SC confianza: desconocido validez: caducada sub 4096R/13B69DCC creado: 2015-11-30 caducó: 2016-07-27 uso: E [ caducada ] (1). Evaristo García Zambrana <evarist***@gmail.com> |
Con el anterior comando, entraremos en una CLI de gpg. Clave pública y subclave tienen fechas de expiración independientes aunque estas, en este caso, coincidan. Lo primero será seleccionar la clave pública con la ejecución key 0
.
1 2 3 4 5 6 |
gpg> key 0 pub 4096R/85268F85 creado: 2015-11-19 caducó: 2016-07-17 uso: SC confianza: desconocido validez: caducada sub 4096R/13B69DCC creado: 2015-11-30 caducó: 2016-07-27 uso: E [ caducada ] (1). Evaristo García Zambrana <evarist***@gmail.com> |
Seguidamente renovamos la expiración de la clave seleccionada con expire
y ampliamos la fecha de caducidad utilizando la unidad que deseemos. En mi caso, elijo 5 años siendo ahora la fecha de caducidad el 29 de septiembre de 2024.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
gpg> expire Cambiando caducidad de clave primaria. Especifique el período de validez de la clave. 0 = la clave nunca caduca <n> = la clave caduca en n días <n>w = la clave caduca en n semanas <n>m = la clave caduca en n meses <n>y = la clave caduca en n años ¿Validez de la clave (0)? 5y La clave caduca dom 29 sep 2024 00:30:21 CEST ¿Es correcto? (s/n) s Necesita una contraseña para desbloquear la clave secreta del usuario: "Evaristo García Zambrana <evarist***@gmail.com>" clave RSA de 4096 bits, ID 85268F85, creada el 2015-11-19 pub 4096R/85268F85 creado: 2015-11-19 caduca: 2024-09-30 uso: SC confianza: desconocido validez: desconocido sub 4096R/13B69DCC creado: 2015-11-30 caducó: 2016-07-27 uso: E [desconocida] (1). Evaristo García Zambrana <evarist***@gmail.com> |
Sin salir de la consola de gpg, cambiamos el selector a la clave 1 y el periodo de validez de la clave GPG sumándole 5 años.
Al igual que en el cambio anterior, debemos ingresar la contraseña para hacer uso de la clave privada GPG. Tras esto, salimos con q
y grabamos los cambios.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
gpg> key 1 pub 4096R/85268F85 creado: 2015-11-19 caduca: 2024-09-30 uso: SC confianza: desconocido validez: desconocido sub* 4096R/13B69DCC creado: 2015-11-30 caducó: 2016-07-27 uso: E [desconocida] (1). Evaristo García Zambrana <evarist***@gmail.com> gpg> expire Cambiando fecha de caducidad de subclave. Especifique el período de validez de la clave. 0 = la clave nunca caduca <n> = la clave caduca en n días <n>w = la clave caduca en n semanas <n>m = la clave caduca en n meses <n>y = la clave caduca en n años ¿Validez de la clave (0)? 5y La clave caduca mar 29 sep 2024 00:31:39 CEST ¿Es correcto? (s/n) s Necesita una contraseña para desbloquear la clave secreta del usuario: "Evaristo García Zambrana <evarist***@gmail.com>" clave RSA de 4096 bits, ID 85268F85, creada el 2015-11-19 pub 4096R/85268F85 creado: 2015-11-19 caduca: 2024-09-30 uso: SC confianza: desconocido validez: desconocido sub* 4096R/13B69DCC creado: 2015-11-30 caduca: 2024-09-30 uso: E [desconocida] (1). Evaristo García Zambrana <evarist***@gmail.com> gpg> q ¿Grabar cambios? (s/N) s |
No debemos olvidar que estos cambios deben ser subidos a un servidor de claves GPG. En el siguiente punto detallo cómo actualizar una clave GPG en los servidores de llaves o keyservers.
Subir y actualizar clave en servidor GPG
El último paso es subir los cambios que hemos realizado en nuestra llave GPG. Para ello hacemos uso del comando gpg --send-key
seguido de la ID de nuestra clave primaria. Se subirá por defecto al mismo servidor de claves en el que realiza la búsqueda.
1 2 3 4 5 6 7 |
nano@satellite:~$ gpg --send-key 85268F85 gpg: enviando clave 85268F85 a hkp servidor keys.gnupg.net nano@satellite:~$ gpg --search-key evarist*** gpg: buscando "evarist***" de hkp servidor keys.gnupg.net (1) Evaristo García Zambrana <evarist***@gmail.com> 4096 bit RSA key 85268F85, creado: 2015-11-19, caduca: 2024-09-30 Keys 1-1 of 1 for "evarist***". Introduzca número(s), O)tro, o F)in >q |
Es posible que si realizas una búsqueda con gpg --search-key
aún obtengas la fecha de expiración antigua, pues es necesario que se sincronicen los cambios en todos los servidores de claves GPG.
Con ello, ya tendrás tu clave GPG disponible de nuevo para firmar y cifrar tus comunicaciones. Pero… ¡recuerda no perder nunca de vista tu clave privada!
Gracias!
Me ha servido de complemento esta guía!! 🙂
Saludos!!