OSBN/Ubuntuusers Planet RHEL / CentOS XING / LinkedIn / Amazon

Kurztipp: RPM GPG-Key für EL5 und 6 erstellen

Wenn RPM-Pakete für Enterprise Linux 5 und 6 erstellt und signiert werden sollen, müssen bei der Erstellung und Verwendung des GPG-Keys einige Dinge beachtet werden, damit auch EL5-Systeme die signierten Pakete verwenden können.

Wird der GPG-Key mit den Standard-Einstellungen erstellt und ein RPM-Paket damit unter EL6 signiert, ergibt sich auf EL5-Systemen die folgende Fehlermeldung:

# rpm -v --checksig mypackage.rpm
Header V4 RSA/SHA1 signature: BAD, key ID xxxxxxxx

In einem Blog-Artikel habe ich den entscheidenden Hinweis gefunden, dass RPM/GPG in älteren Versionen nicht mit OpenPGP V4-Signaturen umgehen kann. Hier muss die ältere Signatur V3 verwendet werden.

Prinzpiell empfiehlt es sich, für EL5-Pakete mit maximal 2048-bit RSA zu verschlüsseln – das muss bei der Erstellung des GPG-Keys entsprechend berücksichtigt werden.

$ gpg --gen-key
...
Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 2048
Requested keysize is 2048 bits
PPlease 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

GnuPG needs to construct a user ID to identify your key.

Real name: Max Mustermann RPM signing key
Email address: max@mmuster.de
Comment: RPM signing key
You selected this USER-ID:
    "Max Mustermann RPM signing key (RPM signing key) <max@mmuster.de>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
...
$ gpg --export -a 'Max Mustermann RPM signing key (RPM signing key) <max@mmuster.de>' > RPM-GPG-KEY-mmuster

Es empfiehlt sich übrigens nicht die Erstellung des Keys in einer su / sudo-Session zu erstellen, denn das schlägt fehl.

Nach Erstellung des GPG-Keys muss die Datei ~/.rpmmacros angepasst werden, sofern die Pakete auf einem EL6-System signiert werden – in meinem Fall ist das so. Auf EL6-Systemen wird standardmäßig versucht, die V4-Signatur zu verwenden, dieses Verhalten muss deaktiviert werden:

$ vi .rpmmacros
%_signature gpg
%_gpg_name Max Mustermann RPM signing key (RPM signing key) <max@mmuster.de>
%__gpg_sign_cmd %{__gpg} 
    gpg --force-v3-sigs --digest-algo=sha1 --batch --no-verbose --no-armor 
    --passphrase-fd 3 --no-secmem-warning -u "%{_gpg_name}" 
    -sbo %{__signature_filename} %{__plaintext_filename}

Wenn man den GPG Keynamen nicht zur Hand hat, hilft ein Blick auf die Ausgabe des folgenden Kommandos:

pub   xxxxD/xxxxxxxx 2014-02-06
uid                  Max Mustermann RPM signing key (RPM signing key) <max@mmuster.de>
sub   xxxxg/xxxxxxxx 2014-02-06

Nach erfolgter Signierung des RPM-Pakets sollte nun die Signatur auch auf EL5-Systemen reibungslos erkannt werden:

EL6 $ rpm --resign mypackage.rpm
EL6 $ scp mypackage.rpm ...
EL5 $ rpm -v --checksig mypackage.rpm
    Header V3 DSA signature: OK, key ID xxxxxxxx
    Header SHA1 digest: OK (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
    MD5 digest: OK (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
    V3 DSA signature: OK, key ID xxxxxxxx

🙂

Sharing is caring

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.