Construyendo la nueva clave GPG para el repositorio

Porque ayer dije que volvía en un rato pero luego se me va el vino en catas.

Pues ya tengo clave nueva. Y funcionando en el repositorio. No sé qué más pedirle a la vida. Ah, sí, poder usarla.

El tutorial en Digital Ocean que ya mencioné ayer es de lo más claro así que voy a detallar aquí los pasos que he seguido para futuras referencias.

  1. Crear la clave GPG maestra con las características indicadas de tipo (RSA), tamaño (4096 bits) e identidad (root@astillas.net)
  2. Editar para añadir una subclave de tipo RSA también pero para firmar.
  3. Exportar la clave maestra (parte pública y parte privada) a un archivo.
  4. Poner a salvo el archivo anterior (lo añado a mi base de datos Keepass) para borrarlo posteriormente.
  5. Exportar la parte pública de la clave maestra y la privada de la subclave en un par de archivos (public.key y signing.key)
  6. Borramos la parte privada de la clave maestra.
  7. Importamos lo que hemos extraído en el paso 5
  8. Borramos los archivos public.key y signing.key
  9. Enviamos la clave a uno o varios servidores

La secuencia de órdenes la pongo a continuación para que pueda verla más clara pero tal vez, dentro de un tiempo, los parámetros de llamada a gpg hayan cambiado.

$ gpg --full-generate-key
$ gpg --keyid-format LONG -k  root@astillas.net
pub   rsa4096/0x774B65041866CEA4 2019-12-19 [SC]
      5381049786976143DF6050FF774B65041866CEA4
uid                [  absoluta ] Repositorio Debian de astillas.net <root@astillas.net>
sub   rsa4096/0x68BB259847FEB1D3 2019-12-19 [E]
$ gpg --edit-key root@astillas.net
gpg> addkey 
...
$ gpg --keyid-format LONG -k  root@astillas.net
pub   rsa4096/0x774B65041866CEA4 2019-12-19 [SC]
      5381049786976143DF6050FF774B65041866CEA4
uid                [  absoluta ] Repositorio Debian de astillas.net <root@astillas.net>
sub   rsa4096/0x68BB259847FEB1D3 2019-12-19 [E]
sub   rsa4096/0xC8F0EB471A2174B7 2019-12-19 [S] [caduca: 2020-12-18]
$ gpg --export 774B65041866CEA4 > public.key 
$ gpg --export-secret-subkeys 0xC8F0EB471A2174B7 > signing.key
$ gpg --delete-secret-keys 774B65041866CEA4
$ gpg --import public.key signing.key 
$ rm public.key signing.key 
$ gpg --keyserver keys.openpgp.org --send-key 0x774B65041866CEA4

Respecto a enviar la clave he empleado el servidor keys.openpgp.org porque me ha llamado la atención por lo directo y sencillo. Una vez enviada una clave por cualquiera de los métodos de que disponen te envían un correo a la dirección que figura en ella para que valides la operación. Todo es rápido y muy simple.

Pero volviendo al tema, para hacer que reprepro emplee esta clave para firmar no hay más que cambiar la configuración en el archivo conf/distributions e indicarle el ID de subclave directamente (0xC8F0EB471A2174B7 por ejemplo) o la dirección de correo (root@astillas.net) en el parámetro SignWith: root@astillas.net.

Y como se supone que los paquetes Debian están firmados individualmente, a reprepro le basta con firmar el manifiesto contenido en Release y enviarlo al repositorio indicado en las fuentes de APT.

Y ya está. Al menos esta parte. Ahora tengo que repasar la idea de tener el repositorio de paquetes en git porque hay algo que no termina de funcionar correctamente. La idea es buena, conste, pero no estoy seguro de que el contenido web deba ser creado en cada copia del repositorio.

También volveré en breve …

Referencias