Signen van RPM’s met GPG key
In Satellite kunnen eigen software channels worden aangemaakt. Hiermee kunnen aangepaste of eigen RPM’s via Satellite beschikbaar gesteld worden aan de clients. Een voorwaarde is wel dat de RPM packages zijn gesigned met een GPG key en dat de public GPG key voor de clients beschikbaar is en is importeerd. Hieronder wordt beschreven hoe dit kan worden uitgevoerd.
De werkzaamheden omvatten voor een deel een aantal eenmalig uit te voeren werkzaamheden en een aantal wat steeds voor elk RPM package terugkeert. Bij het aanmaken van een channel zal naast de ID ook om de GPG fingerprint worden gevraagd. Deze kan worden opgevraagd door: gpg --fingerprint
.
Eenmalige werkzaamheden
Aanmaken GPG keypair
- Maak een nieuwe GPG key aan met:
gpg --gen-key
om een GPG keypair aan te maken. Kies voor type 1, een DSA and Elgamal type key. Als keysize kan voor 2048 of 1024 gekozen worden. Een key van 2048 bits is uiteraard aanbevelingswaardig. - Na generatie moet de public key worden geexporteerd, dat kan met:
gpg --export -a {naam vande key} > {naam waarmee de key is aangemaakt}
.
Stel dat de key is aangemaakt met de naam Linuxteam en de public key wordt als LINUXTEAM-GPG-KEY opgeslagen:
gpg --export -a "LinuxTeam" > LINUXTEAM-GPG-KEY
Aanpassen van ~/.rpmmacros
Opmerking: Het beschrijven van het zelf maken van RPM packages valt buiten de scope van dit onderwerp.
Om tijdens het maken of het signen van bestaande RPM packages moet de ~/.rpmmacros
file worden aangepast. In onderstaand voorbeeld wordt er vanuit gegaan dat als user root RPM packages gemaakt worden en de GPG key is aangemaakt met de naam LinuxTeam:
%_gpg_name LinuxTeam
Importeren public key
De aangemaakte GPG key moet nog worden geimporteerd. Als we de bovengenoemde voorbeelden volgen dan wordt dit gedaan met:
rpm --import LINUXTEAM-GPG-KEY
Hiermee is de basis gelegd om bestaande of te bouwen RPM packages te signen met een GPG key.
GPG key beschikbaar in Satellite
Om van de GPG key gebruik te kunnen maken in RedHat Satellite moet de exporteerde public key beschikbaar worden gesteld. Dit is ook nodig als eigen software Channels worden aangemaakt. In bovenstaand voorbeeld is de public key ge-exporteerd als LINUXTEAM-GPG-KEY, als dit voorbeeld gevolgd wordt kan met cp LINUXTEAM-GPG-KEY /var/www/html/pub
de public key beschikbaar worden gesteld.
Bij het aanmaken van een software Channel in Satellite wordt dan de volgende URL ingevuld onder Security: GPG
https://satellite.example.com/pub/LINUXTEAM-GPG-KEY
Terugkerende werkzaamheden
Signen van bestaande RPM packages
Een reeds bestaand RPM package, wat nog niet gesigned is door een andere GPG key, kan worden gesigned door:
rpm --resign {rpm package name}
Bouwen van RPM packages met GPG key
Als met rpmbuild zelf een RPM package gemaakt wordt kent rpmbuild een optie om het gegenereerde RPM package direct te signen. Als de bovenstaande eenmalige werkzaamheden zijn uitgevoerd dan kan dit door:
rpmbuild -v -ba --sign --clean SPECS/nrpe.spec
Opmerking: Als rpmbuild als root aangeroepen wordt dan wordt bovenstaande opdracht in /usr/src/redhat
gegeven.
Controle van een GPG signed RPM package
Controleer een RPM package met: rpm -K -v {rpm package naam}
Dit geeft soortgelijke uitvoer als van het RPM package nagios-plugins-1.4.14-1 de GPG signature wordt opgevraagd. In dit voorbeeld is het RPM package correct gesigned.
rpm -K -v nagios-plugins-1.4.14-1.x86_64.rpm nagios-plugins-1.4.14-1.x86_64.rpm: Header V3 DSA signature: OK, key ID ae175d8e Header SHA1 digest: OK (9c915a0e8aa474bcfa6d0b3280753b1e83df295f) MD5 digest: OK (6f9c3b94b9a0fc8b51984c8acb8d4334) V3 DSA signature: OK, key ID ae175d8e
De laatste regel geeft aan: Key ID ae175d8e. Dit ID is te controleren door ,code>gpg –list-keys te geven en dit ID moet dan terugkomen bij de public key waarmee het RPM package gesigned is.