Debian 11: Repositories aus 3. Hand ohne apt-key einbinden

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.

Teilt den Beitrag, falls ihr mögt

Abonnieren
Benachrichtige mich bei
8 Kommentare
Most Voted
Newest Oldest
Inline Feedbacks
View all comments