Wer in letzter Zeit versucht hat, bei Debian, Ubuntu oder deren Repositories aus 3. Hand in die Quellenliste einzutragen und dabei den herkömmlichen Weg zu gehen, wurde mit einer Warnung konfrontiert. Das liegt daran, dass viele Anleitungen im Netz noch immer die Verwendung von apt-key
für das Einbinden der Schlüssel verwenden, obwohl apt-key
schon lange als überholt gilt. Bereits 2010 wurde es als veraltet und unsicher markiert und wird mit Debian 11 und Ubuntu 22.04 letztmalig ausgeliefert.
Unsichere Methoden
Es gibt verschiedene Möglichkeiten, ein APT-Repository aus dritter Hand einzubinden. Die entsprechenden Schlüssel wurden früher unter /etc/apt/trusted.gpg und in letzter Zeit manuell in Unterverzeichnissen von /etc/apt/trusted.gpg.d abgelegt. Obwohl letzteres oft empfohlen wird, sieht das Debian-Wiki beide Möglichkeiten als unsicher an.
Der Grund dafür ist, dass beim Hinzufügen eines OpenPGP-Schlüssels zum Signieren eines APT-Repositorys zu einem der beiden Verzeichnisse dem Schlüssel von APT bedingungslos auch bei allen anderen auf dem System konfigurierten Repositorys vertraut wird, die über keine signed-by-Option verfügen. Infolgedessen kann jedes inoffizielle APT-Repository, dessen Signierschlüssel zu /etc/apt/trusted.gpg oder /etc/apt/trusted.gpg.d hinzugefügt wurde, jedes Paket auf dem System ungefragt aktualisieren oder ersetzen.
Bisheriges Vorgehen
Eine typische Zeile zum Einbinden des Schlüssels bei Debian-basierten Distributionen sieht oft etwa so aus wie hier am Beispiel des Signal-Messengers:
wget -O- https://updates.signal.org/desktop/apt/keys.asc | sudo apt-key add -
Das ergibt eine Warnung:
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Debian 12 verlangt ein anderes Vorgehen
Apt-key kann derzeit noch benutzt werden, aber mit dem in wenigen Monaten erwarteten Debian 11 fällt diese Möglichkeit weg. Deswegen ergibt es Sinn, sich bereits jetzt mit der von Debian-Wiki erwähnten Methode signed-by
vertraut zu machen. Laut dem Debian-Wiki sollte der Schlüssel über HTTPS an einen Ort heruntergeladen werden, der nur von Root beschreibbar ist, wie etwa /usr/share/keyrings. Der Schlüssel sollte einen kurzen Namen erhalten, der das Repository beschreibt, gefolgt von archive-keyring als Erweiterung. Wenn das Repository z. B. mein_repository heißt, sollte die Schlüsseldatei mein_repository-archive-keyring.gpg heißen.
Die OpenPGP-Keys von Repositories aus dritter Hand sind in der Regel mit der Methode ASCII-Armor versehen. Diese Verpackung gilt es, bereits während des Downloads zu entfernen.
Im Fall des oben als Beispiel verwendeten Schlüssels für das Repository des Signal-Messengers sieht das dann so aus:
Schlüssel unter Root-Kontrolle
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/signal-archive-keyring.gpg
Nachdem der Schlüssel am richtigen Ort liegt, gilt es, den Eintrag für die Quellenliste zu formulieren. Um im Beispiel bei Signal zu bleiben, legen wir zunächst einen Listeneintrag in /etc/apt/sources.list/d an:
sudo nano /etc/apt/sources.list.d/signal.list
Der Inhalt der Datei lautet:
deb [signed-by=/usr/share/keyrings/signal-archive-keyring.gpg] https://updates.signal.org/debian/ stable main
Dabei sind natürlich die Distribution und der Zweig anzupassen. Für Ubuntu würde es so aussehen:
deb [signed-by=/usr/share/keyrings/signal-archive-keyring.gpg] https://updates.signal.org/desktop/apt groovy main
Damit wird das Einbinden von Repositories aus dritter Hand mit Debian 11, Ubuntu 22.04 und deren Derivaten nicht unbedingt einfacher, aber sicherer. Wenn man sich die Zeile, die den Schlüssel per wget holt und die Definition für die Quellenliste wegspeichert, muss man im Bedarfsfall nur noch die Befehle anpassen.
Schreibe einen Kommentar