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
root@sme8rpm]# rpm --checksig smeserver-roundcube-0.9-15.rpm smeserver-roundcube-0.9-15.src.rpm: (sha1) dsa sha1 md5 gpg OK