apt/Schlüsselverwaltung

Achtung!

Dieser Artikel wird aktuell in Baustelle/apt/Schlüsselverwaltung überarbeitet. Daher kann es sein, dass diese Seite hier veraltete oder nicht (mehr) zutreffende Informationen enthält. Vergleiche beide Versionen und wende dich im Zweifelsfall mit deinem konkreten Anliegen an das Support-Forum. Änderungen am Artikel bitte nur in Baustelle/apt/Schlüsselverwaltung!

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. ⚓︎ Installation von Programmen

  2. ⚓︎ Starten von Programmen

  3. ⚓︎ Ein Terminal öffnen

  4. ⚓︎ mit Root-Rechten arbeiten

  5. ⚓︎ GnuPG

  6. ⚓︎ apt

  7. ⚓︎ Paketquellen

Achtung: Diese Anleitung ist veraltet. Zumindest bei 22.04 LTS Jammy Jellyfish liegen die Schlüssel einzeln in /etc/apt/trusted.gpg.d/, eine Referenz von der Datei in /etc/apt/sources.list.d/ ist nicht mehr notwendig. Ich bin selbst nur Laie und habe das unten genannte sudo -H gpg --dearmor -o verwendet, die Dateien allerdings anschliessend verschoben. Ob es eine offizielle Methode gibt, ist mir unbekannt.

Inhaltsverzeichnis
  1. Schlüssel hinzufügen
  2. sources.list anpassen
  3. Schlüssel löschen
  4. Links

Pakete in Paketquellen werden mit einem Schlüssel kryptografisch signiert, um die Integrität der Pakete überprüfen zu können. Bisher wurden diese mit apt/apt-key verwaltet, was jedoch veraltet ist und seit Ubuntu 22.04 nicht mehr vollumfänglich unterstützt wird. Die Schlüssel wurden in der Datei /etc/apt/trusted.gpg bzw. in einzelnen Dateien unter /etc/apt/trusted.gpg.d/ abgelegt. Der Nachteil ist, dass jeder Schlüssel für jede Paketquelle gültig ist. Damit kann mit dem Schlüssel einer Fremdquelle auch ein Paket aus den offiziellen Paketquellen signiert und von apt erfolgreich verifiziert werden, obwohl es nicht vom ursprünglichen Autor signiert wurde. Problematisch wird dies ebenfalls, wenn ein Schlüssel kompromittiert wurde, da hierbei eine MITM-Attacke nicht erkannt werden kann, sofern ein Fremdschlüssel im System ist, für den der Angreifer den zugehörigen Privatschlüssel hat. Die neue Methode bietet jedoch keine Sicherheit gegen Fremdquellen, deren Autoren absichtlich Schaden am System anrichten wollen und daher schädliche Pakete in einer Fremdquelle bereitstellen, die das Opfer im System eingetragen hat.

Schön länger besteht die Möglichkeit, einer Paketquelle fest einen Schlüssel zuzuordnen, welche hier erläutert wird und die empfohlene Methode ist. Ab Ubuntu 22.04 funktioniert die veraltete Methode mit apt-key nicht mehr.

Schlüssel hinzufügen

Um einen Schlüssel dem System hinzuzufügen, ist daher folgende Vorgehensweise notwendig.

Binäre Schlüssel können direkt heruntergeladen werden. Beispiel:

sudo wget -nc -O /etc/apt/keyrings/example-archive-keyring.gpg https://example.org/public.key 

ASCII-verpackte Schlüssel (base64-kodiert) müssen erst mit root-Rechten an gpg weitergegeben werden, um sie zu dekodieren (dearmor genannt). Er wird dann zu einer OpenPGP-Binärdatei, welche nicht mehr als Text lesbar ist, und wird in /etc/apt/keyrings/schluessel.gpg abgespeichert. Hierbei sollte ein sinnvoller Name gewählt werden, um den Schlüssel sinnvoll zuordnen zu können. Evtl. muss das unter Root nötige gpg-Verwaltungsverzeichnis noch manuell angelegt werden: sudo -H mkdir -p /root/.gnupg

curl https://example.org/public-key.asc | sudo -H gpg --dearmor -o /etc/apt/keyrings/example-archive-keyring.gpg 

Anhand der Schlüssel-ID kann ebenfalls ein Schlüssel hinzugefügt werden.

sudo -H gpg -k && sudo -H gpg --no-default-keyring --keyring /usr/share/keyrings/schlüssel.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys <Schlüssel-ID> 

Danach ist der Schlüssel im System vorhanden, wird aber noch nicht aktiv genutzt.

sources.list anpassen

Es muss die URL der Paketquelle (in /etc/apt/sources.list bzw. /etc/apt/sources.list.d/datei.list) eingetragen bzw. angepasst werden, sodass der passenden Schlüssel verwendet wird.

deb [signed-by=/etc/apt/keyrings/schluessel.gpg] http://example.org/linux/deb/ stable main

Der Teil signed-by in den eckigen Klammern ist dabei relevant und muss den Pfad zum Schlüssel beinhalten. Es können, müssen aber nicht, mehrere Optionen dort gelistet sein. Auch hier muss der Name angepasst werden.

Schlüssel löschen

Um einen Schlüssel zu löschen, genügt es, die entsprechende Datei unter /etc/apt/keyrings zu löschen.