In-Place-Upgrade von RHEL-Clones soll man nicht machen, egal ob CentOS, Rocky Linux, AlmaLinux oder ... . "Soll man nicht" bedeutet ja nicht, dass man es nicht trotzdem tut. Vor allem, wenn ein Server einerseits nicht besonders kritisch, andererseits die Installation und Konfiguration der Software darauf komplex ist. Was soll ich sagen: Ich habe es getan und es gab Probleme.
Der einfache Weg von Rocky Linux 8 zu Rocky Linux 9
Es gibt im Internet einige Anleitungen, wie man z. B. Rocky Linux 8 auf Version 9 aktualisieren kann. Ein einfacher Weg war für mich, das Projekte ELevate von AlmaLinux zu nutzen.
Wenn der RL8-Server komplett aktualisiert und zur Sicherheit auch einmal durchgestartet worden ist, sind es dann nur noch wenige Befehle:
yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm
yum install -y leapp-upgrade leapp-data-rockylinux
leapp preupgrade
Wenn Warnungen oder Fehler kommen, sollte man die Ursache beseitigen und die Pre-Upgrade-Analyse solange wiederholen, bis sie grünes Licht gibt. Danach dann die echte Aktualsierung ausführen mit:
leapp upgrade
reboot
SHA1 ist unsicher und wurde deaktiviert
Nun zum eigentlichen Thema dieses Blog-Eintrags. Ein Unterschied zwischen den Versionen 8 und 9 des RHEL-Servers und aller Klone ist, dass der DNF-Paketmanager Signaturen mit SHA1 nicht mehr akzeptiert. Richtig so, weil dieser Algorithmus seit sehr langer Zeit als gebrochen und unsicher gilt. Redhat, Rocky Linux usw. nutzen schon lange den Nachfolger, nur leider gibt es einige Pakete aus anderen Repositories, die auf dem Server installiert sein können, die noch mit einer SHA1-Signatur unterzeichnet worden waren.
Jedes Mal, wenn man dnf
aufruft, bekommt man jetzt ein- oder mehrfach die Zeile:
Warnung: Signature not supported. Hash algorithm SHA1 not available.
bzw. bei einem auf Englisch eingestellten Server:
Warning: Signature not supported. Hash algorithm SHA1 not available.
Mein Problem war: Leider sagt dnf
nicht, welches Paket bzw. welche Signatur das ist.
Es gibt mehrere Artikel bzw. Problemlösungen auf einschlägigen Admin-Seiten, wie etwa "Dnf warning message after upgrade from Rocky 8 to Rocky 9" oder "RHEL8 upgrade to RHEL9 with Leapp: warning: Signature not supported. Hash algorithm SHA1 not available", die verschiedene Varianten von rpm -qa
-Aufrufen angeben, womit man die Schuldigen identifizieren und anschließend mit dnf remove gpg-pubkey-xxxxx-xxxxx
entfernen können soll. Leider hat das bei mir nicht funktioniert.
rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n'
Einen anderen Weg, der unter anderem hier beschrieben wurde "Enable and Disable SHA1 algorithm on your system CentOS Stream 9/AlmaLinux 9/RockyLinux 9", wäre das erneute erlauben von SHA1. Für mich ein No-Go.
Hilfreich war dann ein Knowlegde-Base-Artikel von Redhat "rpm/yum/dnf/subscription-manager show "warning: Signature not supported. Hash algorithm SHA1 not available.", der aber nicht allgemein zugänglich ist.
Der direkte Weg zum Ziel
Dafür ist der angegebene Weg "deterministisch" und hat mir geholfen. Und die Befehlszeilen sind deutlich länger und unverständlicher...
strace -yyv -s 4096 -e pread64,write -o /tmp/rpm_-qa.strace rpm -q foopgk
grep -F -B4 'Signature not supported.' /tmp/rpm_-qa.strace| fgrep -e gpg-pubkey -e 'BEGIN PGP PUBLIC KEY BLOCK'
Die Ausgabe pro gefundener Signatur geht über viele, viele Zeilen, z. B.
pread64(3</var/lib/rpm/rpmdb.sqlite>, "\r\0\0\0\1\0(\0\0(\0\341\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
\0\0\0\0\0\0\0\0\0\0\0\237T\201#\4\0\277,\0\0\0\25\0\0\16x\0\0\0?\0\0\0\7\0\0\0164\0\0\0\20\0
\0\1\n\0\0\0\10\0\0\0\0\0\0\0\1\0\0\3\350\0\0\0\6\0\0\6F\0\0\0\1\0\0\3\351\0\0\0\6\0\0\6Q\0\0
\0\1\0\0\3\352\0\0\0\6\0\0\6Z\0\0\0\1\0\0\3\354\0\0\0\t\0\0\6c\0\0\0\1\0\0\3\355\0\0\0\t\0\0\6
\211\0\0\0\1\0\0\3\356\0\0\0\4\0\0\r<\0\0\0\1\0\0\3\357\0\0\0\6\0\0\r@\0\0\0\1\0\0\3\361\0\0\0
\4\0\0\rL\0\0\0\1\0\0\3\366\0\0\0\6\0\0\rP\0\0\0\1\0\0\3\367\0\0\0\6\0\0\rW\0\0\0\1\0\0\3\370\0
\0\0\t\0\0\rx\0\0\0\1\0\0\4\24\0\0\0\6\0\0\r\204\0\0\0\1\0\0\4\27\0\0\0\10\0\0\r\213\0\0\0\3\0\0
\4(\0\0\0\6\0\0\r\315\0\0\0\1\0\0\4X\0\0\0\4\0\0\r\324\0\0\0\3\0\0\4Y\0\0\0\10\0\0\r\340\0\0\0\3
\0\0\1\r\0\0\0\6\0\0\16D\0\0\0\1\0\0\3\360\0\0\0\4\0\0\16p\0\0\0\1\0\0\4h\0\0\0\4\0\0\16t\0\0\0
\1mQENBFeIdv0BCADAzkjO9jHoDRfpJt8XgfsBS8FpANfHF2L29ntRwd8ocDwxXSbt\nBuGIkUSkOPUTx6i/
e9hd8vYh4mcX3yYpiW8Sui4aXbJu9uuSdU5KvPOaTsFeit9j\nBDK4b0baFYBDpcBBrgQuyviMAVAczu5qlwol
A/Vu6DWqah1X9p+4EFa1QitxkhYs\n3br2ZGy7FZA3f2sZaVhHAPAOBSuQ1W6tiUfTIj/Oc7N+FBjmh3VNfIv
MBa0E3rA2\nJlObxUEywsgGo7FPWnwjZyv883slHp/I3H4Or9VBouTWA2yICeROmMwjr4mOZtJT\nz9e4v/a
2cG/mJXgxCe+FjBvTvrgOVHAXaNwLABEBAAG0IFphYmJpeCBMTEMgPHBh\nY2thZ2VyQHphYmJpeC5jb20+
iQE4BBMBAgAiBQJXiHb9AhsDBgsJCAcDAgYVCAIJ\nCgsEFgIDAQIeAQIXgAAKCRAIKrVroU/lkbO8B/4/Mh
xoUN2RPmH7BzFGIntKEWAw\nbRkDzyQOk9TjXVegfsBnzmDSdowh7gyteVauvr62jiVtowlE/95vbXqbBCISLq
KG\ni9Wmbrj7lUXBd2sP7eApFzMUhb3G3GuV5pCnRBIzerDfhXiLE9EWRN89JYDxwCLY\nctQHieZtdmlnPyC
bFF6wcXTHUEHBPqdTa6hvUqQL2lHLFoduqQz4Q47Cz7tZxnbr\nakAewEToPcjMoteCSfXwF/BRxSUDlN7tKFf
BpYQawS8ZtN09ImHOO6CZ/pA0qQim\niNiRUfA25onIDWLLY/NMWg+gK94NVVZ7KmFG3upDB5/uefK6X
wu2PsgiXSQguQEN\nBFeIdv0BCACZgfqgz5YoX+ujVlw1gX1J+ygf10QsUM9GglLEuDiSS/Aa3C2UbgEa\n+N
7JuvzZigGFCvxtAzaerMMDzbliTqtMGJOTjWEVGxWQ3LiY6+NWgmV46AdXik7s\nUXM155f1vhOzYp6EZj/xt
GvyUzTLUkAlnZNrhEUbUmOhDLassVi32hIyMR5W7w6I\nIi0zIM1mSuLR0H6oDEpR3GzuGVHGj4/sLeAg7iY
5MziGwySBQk0Dg0xH5YqHb+uK\nzCTH/ILu3srPJq+237Px/PctAZCEA96ogc/DNF2XjdUpMSaEybR0LuHHst
Aqkrq8\nAyRtDJNYE+09jDFdUIukhErLuo1YPWqFABEBAAGJAR8EGAECAAkFAleIdv0CGwwA\nCgkQCCq1a6
FP5ZH8+wf/erZneDXqM6xYT8qncFpc1GtOCeODNb19Ii22lDEXd9qN\nUlAz2SB6zC5oywlnR0o1cglcrW96M
D/uuCL/+tTczeB2C455ofs2mhpK7nKiA4FM\n+JZZ6XSBnq7sfsYD6knbvS//SXQV/qYb4bKMvwYnyMz63escg
QhOsTT20ptc/w7f\nC+YPBR/rHImKspyIwxyqU8EXylFW8f3Ugi2+Fna3CAPR9yQIAChkCjUawUa2VFmm\n5K
P8DHg6oWM5mdqcpvU5DMqpi8SA26DEFvULs8bR+kgDd5AU3I4+ei71GslOdfk4\ns1soKT4X2UK+dCCXu
i+/5ZJHakC67t5OgbMas3Hz4Q==\n\0gpg-pubkey\0a14fe591\000578876fd\0gpg(Zabbix LLC <packager
@zabbix.com>)\0-----BEGIN PGP PUBLIC KEY BLOCK-----\nVersion: rpm-4.14.2 (NSS-3)\n\nmQENBFeIdv0
BCADAzkjO9jHoDRfpJt8XgfsBS8FpANfHF2L29ntRwd8ocDwxXSbt\nBuGIkUSkOPUTx6ie9hd8vYh4mcX3yYpi
W8Sui4aXbJu9uuSdU5KvPOaTsFeit9j\nBDK4b0baFYBDpcBBrgQuyviMAVAczu5qlwolAVu6DWqah1X9p+4EF
a1QitxkhYs\n3br2ZGy7FZA3f2sZaVhHAPAOBSuQ1W6tiUfTIjOc7N+FBjmh3VNfIvMBa0E3rA2\nJlObxUEyws
gGo7FPWnwjZyv883slHp/I3H4Or9VBouTWA2yICeROmMwjr4mOZtJT\nz9e4v/a2cGmJXgxCe+FjBvTvrgOV
HAXaNwLABEBAAG0IFphYmJpeCBMTEMgPHBh\nY2thZ2VyQHphYmJpeC5jb20+iQE4BBMBAgAiBQJXiHb9
AhsDBgsJCAcDAgYVCAIJ\nCgsEFgIDAQIeAQIXgAAKCRAIKrVroU/lkbO8B/4MhxoUN2RPmH7BzFGIntKEWA
w\nbRkDzyQOk9TjXVegfsBnzmDSdowh7gyteVauvr62jiVtowlE/95vbXqbBCISLqKG\ni9Wmbrj7lUXBd2sP7eA
pFzMUhb3G3GuV5pCnRBIzerDfhXiLE9EWRN89JYDxwCLY\nctQHieZtdmlnPyCbFF6wcXTHUEHBPqdTa6hvU
qQL2lHLFoduqQz4Q47Cz7tZxnbr\nakAewEToPcjMoteCSfXwF/BRxSUDlN7tKFfBpYQawS8ZtN09ImHOO6CZ
pA0qQim\niNiRUfA25onIDWLLY/NMWg+gK94NVVZ7KmFG3upDB5uefK6Xwu2PsgiXSQguQEN\nBFeIdv0B
CACZgfqgz5YoX+ujVlw1gX1J+ygf10QsUM9GglLEuDiSS/Aa3C2UbgEa\n+N7JuvzZigGFCvxtAzaerMMDzbliT
qtMGJOTjWEVGxWQ3LiY6+NWgmV46AdXik7s\nUXM155f1vhOzYp6EZjxtGvyUzTLUkAlnZNrhEUbUmOhD
LassVi32hIyMR5W7w6I\nIi0zIM1mSuLR0H6oDEpR3GzuGVHGj4/sLeAg7iY5MziGwySBQk0Dg0xH5YqHb+u
K\nzCTH/ILu3srPJq+237Px/PctAZCEA96ogcDNF2XjdUpMSaEybR0LuHHstAqkrq8\nAyRtDJNYE+09jDFdUIu
khErLuo1YPWqFABEBAAGJAR8EGAECAAkFAleIdv0CGwwA\nCgkQCCq1a6FP5ZH8+wf/erZneDXqM6xYT8q
ncFpc1GtOCeODNb19Ii22lDEXd9qN\nUlAz2SB6zC5oywlnR0o1cglcrW96MD/uuCL/+tTczeB2C455ofs2mhp
K7nKiA4FM\n+JZZ6XSBnq7sfsYD6knbvS//SXQV/qYb4bKMvwYnyMz63escgQhOsTT20ptc/w7f\nC+YPBR/r
HImKspyIwxyqU8EXylFW8f3Ugi2+Fna3CAPR9yQIAChkCjUawUa2VFmm\n5KP8DHg6oWM5mdqcpvU5DM
qpi8SA26DEFvULs8bR+kgDd5AU3I4+ei71GslOdfk4\ns1soKT4X2UK+dCCXui+/5ZJHakC67t5OgbMas3Hz4
Q==\n=5TOS\n-----END PGP PUBLIC KEY BLOCK-----\n\0\0\0W\210v\375localhost\0\0\0\0\0\0\0pubkey
\0Zabbix LLC <packager@zabbix.com>\0Public Keys\0(none)\0gpg(Zabbix LLC <packager@zabbix.com>)\0
gpg(a14fe591)\0gpg(e709712c)\0004.14.2\0\4\0\0\10\4\0\0\10\4\0\0\0104:082ab56ba14fe591-578876f
d\0004:082ab56ba14fe591-578876fd\0004:df517f33e709712c-578876fd\0\0\0\0?\0\0\0\7\377\377\376
\340\0\0\0\20d1eb6ca14f96d279bd05930fb7b37f0dd67ef240\0\0\0\0_\30\\\35_\30\\\35", 4096, 210288
64) = 4096
Irgendwo darin versteckt sich ein -----BEGIN PGP PUBLIC KEY BLOCK-----
und kurz davor etwas wie gpg-pubkey\0a14fe591\000578876fd
.
Wenn man jetzt die \0
bzw. \000
durch Bindestriche ersetzt, bekommt man den Namen des Schlüssel, den man dann mit
rpm --erase --allmatches gpg-pubkey-a14fe591-578876fd
aus dem System entfernen kann. Zusätzlich sieht man in der langen Ausgabe auch Details zum Paket, es dann den dazu passenden, aktuellen Schlüssel zu installieren.