System-Linux

Aller au contenu | Aller au menu | Aller à la recherche

Signer un rpm fait maison

gnu pg jpg

C'est très simple et ça fait plus propre.

C'est bien gentil de bidouiller mais des fois il faut signer ses bidouilles. Cet article fait suite à celui concernant la création de rpm.

Pré-requis :

Vérifiez que vous avez bien Gnupg

rpm -qa | grep gnupg

Installez le package gnupg :

Tout simplement :

yum install gnupg

Création de la clef publique et de la clef privée :

Tapez ceci avec l’utilisateur que vous avez choisi pour gérer vos rpms.

gpg --gen-key

Répondez aux questions, les valeurs par défauts sont correctes. N'oubliez pas de choisir une bonne passe-phrase de protection.

Vous risquez lors de la création des clefs de rencontrer ce message :

Not enough random bytes available.  Please do some other work to give the OS a chance to collect more entropy! (Need 281 more bytes)

Pour résoudre la chose :

dd if=/dev/urandom of=file count=100000

Une fois terminé, le dossier contenant vos clefs publiques et privées est :

  • /HOME/user/.gnupg

Exporter votre clef publique afin de la communiquer si besoin :

gpg --export --armor >RPM-GPG-KEY-votre-nom

Il est aussi utile de l'importer sur le système afin de pouvoir vérifier vos propres RPM :

rpm --import ~builder/RPM-GPG-KEY-votre-nom

Arrivez ici si vous essayez de signer un paquet vous aurez l’erreur suivante :

error: You must set "%_gpg_name" in your macro file
Pass phrase check failed

Pour remédier à ça il faut créer un fichier .rpmmacros

Fichier .rpmmacros :

Créez le fichier .rpmmacros dans le répertoire /home/votre-utilisateur (même répertoire que .gnupg). Et collez y ceci :

%_signature gpg 
%_gpg_path /home/gangan/.gnupg 
%_gpg_name System-linux.eu (blog) <gan-gan@system-linux.info> 
%_gpgbin /usr/bin/gpg 

Si un jour vous avez besoin de changer la pass-phrase :

gpg --edit-key System-linux.eu passwd

Maintenant vous pouvez signer vos rpms avant de les diffuser :

rpmsign --addsign /chemin_vers/pts-linux-mono-2.0.i386.rpm

Votre passe-phrase vous sera demandez .

Vous pouvez aussi le signer lors de la construction :

rpmbuild -bb -sign acsi-linux-mono-1.7-9.i386.rpm

Vous pouvez vérifier la signature avec la commande suivante :

rpmsign --checksig /chemin_vers/pts-linux-mono-2.0.i386.rpm

Qui devrait vous donner :

/home/titi/pts-linux-mono-2.0.i386.rpm: (sha1) dsa sha1 md5 gpg OK

Autre façon, vérifier la signature avec la commande rpm :

rpm -Kv acsi-linux-mono-1.7-9.i386.rpm
acsi-linux-mono-1.7-9.i386.rpm:
Header V3 DSA signature: OK, key ID ee7d849d
Header SHA1 digest: OK (bb49fd4a11329d6dad7a9ae34bb41f3a0e3c1253)
MD5 digest: OK (2853d15f0ccfb11dc3a27d82f4ab09d1)
V3 DSA signature: OK, key ID ee7d849d
Par GanGan | le jeudi, février 25 2010 07:00