Capítulo 4. Temas avanzados
Esta sección cubre temas que están más allá del alcance del tutorial introductorio pero que son útiles en el empaquetado de RPM en el mundo real.
4.1. Paquetes de firmas
Los paquetes están firmados para garantizar que ningún tercero pueda alterar su contenido. Un usuario puede añadir una capa adicional de seguridad utilizando el protocolo HTTPS al descargar el paquete.
Hay tres formas de firmar un paquete:
Para poder firmar un paquete, es necesario crear una clave GNU Privacy Guard (GPG) como se describe en Sección 4.1.1, “Creación de una clave GPG”.
4.1.1. Creación de una clave GPG
Procedimiento
Generar un par de claves GNU Privacy Guard (GPG):
# gpg --gen-key
Confirme y vea la clave generada:
# gpg --list-keys
Exportar la clave pública:
# gpg --export -a '<Nombre_de_clave>' > RPM-GPG-KEY-pmanager
NotaIncluya el nombre real que ha seleccionado para la clave en lugar de <Nombre_de_la_clave>.
Importar la clave pública exportada a una base de datos RPM:
# rpm --import RPM-GPG-KEY-pmanager
4.1.2. Añadir una firma a un paquete ya existente
Esta sección describe el caso más habitual cuando un paquete se construye sin firma. La firma se añade justo antes de la publicación del paquete.
Para añadir una firma a un paquete, utilice la opción --addsign
que ofrece el paquete rpm-sign
.
Tener más de una firma permite registrar la ruta de propiedad del paquete desde el constructor del paquete hasta el usuario final.
Procedimiento
Añadir una firma a un paquete:
$ rpm --addsign blather-7.9-1.x86_64.rpm
NotaSe supone que debes introducir la contraseña para desbloquear la clave secreta de la firma.
4.1.3. Comprobación de las firmas de un paquete con múltiples firmas
Procedimiento
Para comprobar las firmas de un paquete con múltiples firmas, ejecute lo siguiente:
$ rpm --checksig blather-7.9-1.x86_64.rpm blather-7.9-1.x86_64.rpm: size pgp pgp md5 OK
Las dos cadenas
pgp
en la salida del comandorpm --checksig
muestran que el paquete ha sido firmado dos veces.
4.1.4. Un ejemplo práctico de cómo añadir una firma a un paquete ya existente
Esta sección describe una situación de ejemplo en la que puede ser útil añadir una firma a un paquete ya existente.
Una división de una empresa crea un paquete y lo firma con la clave de la división. A continuación, la sede central de la empresa comprueba la firma del paquete y añade la firma corporativa al paquete, indicando que el paquete firmado es auténtico.
Con dos firmas, el paquete llega a un minorista. El minorista comprueba las firmas y, si coinciden, añade también la suya.
El paquete llega ahora a una empresa que quiere desplegarlo. Tras comprobar todas las firmas del paquete, saben que se trata de una copia auténtica. Dependiendo de los controles internos de la empresa que lo despliega, puede optar por añadir su propia firma para informar a sus empleados de que el paquete ha recibido su aprobación corporativa
4.1.5. Sustitución de la firma en un paquete ya existente
Este procedimiento describe cómo cambiar la clave pública sin tener que reconstruir cada paquete.
Procedimiento
Para cambiar la clave pública, ejecute lo siguiente:
$ rpm --resign blather-7.9-1.x86_64.rpm
NotaSe supone que debes introducir la contraseña para desbloquear la clave secreta de la firma.
La opción --resign
también permite cambiar la clave pública de varios paquetes, como se muestra en el siguiente procedimiento.
Procedimiento
Para cambiar la clave pública de varios paquetes, ejecute:
$ rpm --resign b*.rpm
NotaSe supone que debes introducir la contraseña para desbloquear la clave secreta de la firma.
4.1.6. Firmar un paquete en el momento de la compilación
Procedimiento
Construya el paquete con el comando
rpmbuild
:$ rpmbuild blather-7.9.spec
Firme el paquete con el comando
rpmsign
utilizando la opción--addsign
:$ rpmsign --addsign blather-7.9-1.x86_64.rpm
- Opcionalmente, verificar la firma de un paquete:
$ rpm --checksig blather-7.9-1.x86_64.rpm blather-7.9-1.x86_64.rpm: size pgp md5 OK
Cuando construya y firme varios paquetes, utilice la siguiente sintaxis para evitar introducir la frase de contraseña Pretty Good Privacy (PGP) varias veces.
$ rpmbuild -ba --sign b*.spec
Tenga en cuenta que debe introducir la contraseña para desbloquear la clave secreta de la firma.