RPM (Red Hat Package Manager) es un sistema de gestión de paquetes utilizado en distribuciones Linux, en particular en aquellas basadas en Red Hat, como Fedora y CentOS. Los paquetes RPM son paquetes de software que contienen archivos ejecutables, bibliotecas, documentación y otros recursos necesarios para que una aplicación o servicio específico funcione correctamente en un sistema Linux.
Los paquetes RPM son archivos comprimidos que siguen un formato de archivo y una convención de nomenclatura específicos. Suelen tener la extensión ".rpm" y se pueden instalar, actualizar o eliminar mediante herramientas de gestión de paquetes RPM.
El formato de paquete RPM se usa ampliamente en muchas distribuciones de Linux y simplifica la gestión de software al proporcionar un método estandarizado y confiable para empaquetar y distribuir software.
Resumen
Para firmar paquetes RPM con claves GPG, normalmente se siguen los siguientes pasos:
-
Generar par de claves GPG
El mantenedor o distribuidor del paquete genera un par de claves GPG compuesto por una clave privada y una clave pública correspondiente. La clave privada se mantiene segura (preferiblemente en HSM) y no debe compartirse, mientras que la clave pública puede distribuirse ampliamente.
-
Configurar la firma RPM
La clave pública GPG se añade al conjunto de claves del gestor de paquetes RPM, lo que le permite verificar los paquetes firmados con la clave privada correspondiente. Este paso garantiza que el gestor de paquetes reconozca la clave GPG como confiable.
-
Firmar paquetes RPM
El responsable del paquete firma los paquetes RPM utilizando la clave privada asociada al par de claves GPG. Este proceso genera una firma digital para cada paquete.
-
Verificar paquetes RPM
Cuando el gestor de paquetes RPM encuentra un paquete firmado, utiliza la clave pública GPG para verificar su firma. Comprueba si la firma es válida y coincide con el contenido del paquete, garantizando así que no haya sido modificada ni alterada desde su firma.
La firma RPM con claves GPG añade seguridad adicional a los paquetes RPM. Ayuda a establecer la autenticidad e integridad de los paquetes al confirmar que fueron firmados por la entidad que posee la clave privada asociada a la clave pública GPG. Este método permite a los usuarios y sistemas verificar la fiabilidad de los paquetes RPM antes de su instalación y protege contra modificaciones no autorizadas o manipulaciones maliciosas.
Requisitos previos
-
Generar par de claves en HSM
-
Cambiar el directorio a /opt/nfast/bin
$ cd /opt/nfast/bin -
Ejecute el comando e ingrese los detalles apropiados
$ ./generatekey pkcs11 selfcert=yesNota: Recuerde el nombre y la dirección de correo electrónico de su clave, ya que serán necesarios en los pasos siguientes.
-
Ejecutar comando
$ ./ckcerttool -n -f pkcs11_ua4335d6933d9809f048dcf4bc47c90194f2f7ba4b_selfcert -k ua4335d6933d9809f048dcf4bc47c90194f2f7ba4b -L rpmtestAquí el "-fLa opción " corresponde a "autocertificación", la "-kLa opción " se refiere a la clave y la "-LEl parámetro ” debe coincidir con el nombre de clave ingresado anteriormente.
-
Instalar gnupg-pkcs11-scd
$ sudo apt-get install gnupg-pkcs11-scdNota: Si encuentra algún problema al ejecutar el “sudo apt-get install” Comando, intente ejecutar el siguiente comando de antemano.
$ sudo apt-get update && sudo apt-get upgrade -y -
Configurar el agente gnupg
-
Edite las siguientes líneas en el gpg-agente.conf
$ nano ~/.gnupg/gpg-agent.conf
- Enter the below lines and save the file
scdaemon-program /usr/bin/gnupg-pkcs11-scd
pinentry-program /usr/bin/pinentry -
Edite las siguientes líneas en el gnupg-pkcs11-scd.conf
$ nano ~/.gnupg/gnupg-pkcs11-scd.conf
- Enter the below lines and save the file
providers p1
provider-p1-library /opt/nfast/toolkits/pkcs11/libcknfast.so
-
-
Recargar el agente
$ gpg-agent --server gpg-connect-agent <<EOF
> RELOADAGENT
> EOF -
Obtenga la cadena GPG KEY-FRIENDLY (de la clave recién generada)
-
Recuperar los datos de la tarjeta
$ gpg --card-status -
Recuperar nombres y certificados compatibles con claves
$ gpg-agent --server gpg-connect-agent << EOF
> SCD LEARN
> EOF
-
-
Importar la clave al llavero GPG 2
$gpg --expert --full-generate-keyNota: Introduzca la clave amigable generada previamente en el parámetro “Ingrese la clave de acceso”.
-
Para comprobar la clave en el llavero gpg, ejecute el siguiente comando.
$ gpg --list-keys
-
-
Establezca variables de entorno para la ruta del certificado de autenticación de cliente SSL y la contraseña del certificado.
Nota: El certificado de autenticación de cliente SSL debe estar en formato PKCS12 (.p12 o .pfx)
Ejecute el siguiente comando para establecer las variables de entorno:
-
Mac o Linux
$ export EC_Client_Auth=path_to_ssl_certificate
$ export EC_Client_Pass=your_client_certificate_password -
Windows
$ set EC_Client_Auth=path_to_ssl_certificate
$ set EC_Client_Pass=your_client_certificate_password
-
-
Instale todos los siguientes requisitos:
- criptografía==1.4.1
- criptografía==40.0.2
- pycryptodome==3.16.0
- solicitudes == 2.28.2
¿Cómo utilizar la utilidad RPM Signer?
Obtenga la versión de la utilidad RPM Signer
Ejecute el siguiente comando
$ python3 rpmsigner.py -v or $ python3 rpmsigner.py --version
Firmar un paquete RPM
Ejecute el siguiente subcomando sign para firmar un paquete RPM.
Sintaxis:
python3 rpmsigner.py sign <file_to_be_signed> -u <user_name> -k <key_name> -i <issuer_email> -f <key_fingerprint> -a <algorithm> [-o <output_sig_file_name>]
parámetros:
- firmar: Paquete RPM a firmar.
- -tu: Un nombre de usuario en el servidor de firma de código de Encryption Consulting.
- -k: Nombre de clave/certificado para firma/verificación proporcionado por el servidor de firma de código de Encryption Consulting.
- -I: Dirección de correo electrónico del usuario utilizada para generar el par de claves.
- -F: Huella digital de clave gpg en formato hexadecimal.
-
-un:
Algoritmo para firmar. Se utilizará una de las siguientes opciones:
- SHA224
- SHA256 (predeterminado)
- SHA384
- SHA512
Si no se proporciona el algoritmo, utilizará SHA256 como predeterminado.
- -o: Archivo de salida para almacenar la firma. Este parámetro es opcional. Si se proporciona esta opción, se generará un archivo de firma con el nombre especificado. .sig
- -h: Mostrar ayuda.
- -v: Mostrar registros detallados.
Ejemplo:
python3 rpmsigner.py sign test_rpm_signer.rpm -u admin -k RPMtestcert -i [email protected] -f
3E633D3878815FAC111CF488FC15CA0088C43155 -a SHA256 -o myFile.sig
Verificar un paquete RPM
Ejecute el siguiente subcomando de verificación para verificar la firma de un paquete RPM.
Sintaxis:
python3 rpmsigner.py verify <file_to_be_verified> -u <user_name> -k <key_name> -i <issuer_email> -f <key_fingerprint> -a <algorithm>
Ejemplo:
python3 rpmsigner.py verify test_rpm_signer.rpm -u admin -k RPMtestcert -i [email protected] -f
3E633D3878815FAC111CF488FC15CA0088C43155 -a SHA256
¿Quieres saber cómo podemos ayudarte?
Consultoría de cifrado CodeSign seguro Proporciona a las organizaciones una solución integral firma de código Solución adaptada a sus necesidades específicas. Al utilizar esta solución, las organizaciones pueden establecer una sólida política de firma de código que mitiga eficazmente los riesgos de seguridad y garantiza la autenticidad de su software. Nuestro producto optimiza el proceso de firma de código y ofrece una gama de funciones diseñadas para mejorar la seguridad.
Una característica clave de CodeSign Secure es la seguridad gestión de claves. Permite a las organizaciones almacenar de forma segura sus claves privadas del certificado de firma de código mediante la integración con los líderes de la industria. Módulos de seguridad de hardware (HSM) con certificación FIPS. Esta integración elimina los riesgos potenciales asociados con claves robadas, dañadas o mal utilizadas, ya que las claves privadas nunca salen del HSM durante la firma de código.
