Signer ses RPM

GnuPG signifie GNU Privacy Guard, et  est l’outil GNU pour sécuriser les communications et le stockage des données. Il peut aussi être utilisé pour  créer des signatures numériques. Après la construction de votre RPM cela peut être une bonne idée de signer le paquet avec votre propre clé GPG pour s’assurer que le paquet est authentique lors du téléchargement depuis votre dépôt. voir  Stephdl-repository pour un exemple de comment déclarer la signature PGP dans le dépôt Logiciel que je gère pour la SME Server

Dans ce guide, je vais couvrir comment générer votre propre paire de clés GPG et signer votre paquetage RPM avec cette clé.

1)Créez le dossier GnuPG

[root@sme8rpm ]# cd ~
 [root@sme8rpm ]# mkdir .gnupg

2)Générer une paire de clés GPG (clé publique et clé privée)

[root@sme8rpm ]# gpg --gen-key
 gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
 This program comes with ABSOLUTELY NO WARRANTY.
 This is free software, and you are welcome to redistribute it
 under certain conditions. See the file COPYING for details.
gpg: keyring `/root/.gnupg/secring.gpg' created
 gpg: keyring `/root/.gnupg/pubring.gpg' created
 Please select what kind of key you want:
 (1) DSA and ElGamal (default)
 (2) DSA (sign only)
 (4) RSA (sign only)
 Your selection? 1
 DSA keypair will have 1024 bits.
 About to generate a new ELG-E keypair.
 minimum keysize is 768 bits
 default keysize is 1024 bits
 highest suggested keysize is 2048 bits
 What keysize do you want? (1024) 1024
 Requested keysize is 1024 bits
 Please specify how long the key should be valid.
 0 = key does not expire
 = key expires in n days
 w = key expires in n weeks
 m = key expires in n months
 y = key expires in n years
 Key is valid for? (0) 0
 Key does not expire at all
 Is this correct (y/n)? y
You need a User-ID to identify your key; the software constructs the user id
 from Real Name, Comment and Email Address in this form:
 "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name: Foo
 Email address: foo@foo.com
 Comment:
 You selected this USER-ID:
 "Foo <foo@foo.com>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
 You need a Passphrase to protect your secret key.
We need to generate a lot of random bytes. It is a good idea to perform
 some other action (type on the keyboard, move the mouse, utilize the
 disks) during the prime generation; this gives the random number
 generator a better chance to gain enough entropy.
 +++++++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++..+++++
 We need to generate a lot of random bytes. It is a good idea to perform
 some other action (type on the keyboard, move the mouse, utilize the
 disks) during the prime generation; this gives the random number
 generator a better chance to gain enough entropy.
 ++++++++++++++++..++++++++++++++++++++.+++++++++++++++>+++++...+++++^^^
 gpg: /root/.gnupg/trustdb.gpg: trustdb created
 public and secret key created and signed.
 key marked as ultimately trusted.
pub 1024D/23A254D4 2005-01-06 Foo <foo@foo.com>
 Key fingerprint = 9D71 B237 3AE2 B54A B62D 5DC7 2758 9842 23A2 54D4
 sub 1024g/D08816E2 2005-01-06

3)Maintenant que vous avez généré les clés GPG, vous pouvez voir la liste dans votre trousseau de clés en tapant:

[root@sme8rpm]# gpg --list-keys
/root/.gnupg/pubring.gpg
 -------------------------------
 pub 1024D/23A254D4 2005-01-06 Foo <foo@foo.com>
 sub 1024g/D08816E2 2005-01-06

4)Pour extraire ou exporter votre clé publique de votre trousseau de clés dans un fichier texte.

[root@sme8rpm]# gpg --export -a 'Foo' > RPM-GPG-KEY

Ce fichier est nécessaire pour l’importer dans votre base de données de RPM pour vérifier un paquet avec la clé GPG plus tard. Si vous avez l’intention de partager vos paquetages RPM avec d’autres, assurez-vous d’avoir votre fichier de clé publique disponible en ligne à la racine de votre dépôt logiciel,  afin qu’ils puissent vérifier votre RPM. voir  Stephdl-repository pour un exemple de comment déclarer la signature PGP dans le dépôt Logiciel.

5)Pour importer votre clé publique à votre DB RPM

[root@sme8rpm]# rpm --import RPM-GPG-KEY
 Password:

6)Nous allons vérifier la liste des clés GPG publics dans la DB RPM:

[root@sme8rpm]# rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\\n'

7)Dernière étape avant la signature, configurez votre fichier ~ rpmmacros  et y inclure les éléments suivants.:

root@sme8rpm]# nano ~/.rpmmacros
%_signature gpg
 %_gpg_path /root/.gnupg
 %_gpg_name Foo
 %_gpgbin /usr/bin/gpg

8)Maintenant, vous êtes prêt à signer votre paquetage RPM 

root@sme8rpm]# rpmbuild -ba --sign smeserver-roundcube.spec

ou

root@sme8rpm]# rpm --addsign smeserver-roundcube-0.9-15.rpm
9)pour vérifier si tout est ok
root@sme8rpm]# rpm --checksig smeserver-roundcube-0.9-15.rpm
 smeserver-roundcube-0.9-15.src.rpm: (sha1) dsa sha1 md5 gpg OK
Vus : 2310
Publié par Stéphane de Labrusse : 17