Apt-key is deprecated: Repo-Schlüssel exportieren

18. April 2022, Tags:

Linux-Distributionen leben von Repositories. Pakete, die die Distribution selbst nicht oder nur veraltet mitbringt, lassen sich meist in Repositories Dritter finden. Ubuntu und Debian nutzen hierfür das Tool ‚apt‘, welches auch die Echtheit der Repositories prüft. Das dafür verwendete Tool nutzt nun schon seit einiger Zeit ein anderes Verfahren und nervt bei noch nicht aktualisieren Repositories nun mit der Meldung: „Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).“

Warum sind Schlüssel wichtig?

Im Grunde erscheint es nervend, sich um diese Schlüssel kümmern zu müssen. Aber es ist doch wahnsinnig wichtig. Pakete aus Repositories werden mit Befehlen wie ‚apt upgrade‘ oft einfach so und ungeprüft installiert. Darüber könnte sich jemand Drittes einschleichen und Dinge installieren lassen, die man gar nicht haben will. Die Schlüssel helfen dabei sicher zu stellen, dass die Paketquelle auch die ist, der man vertraut.

Früher hat sich das Tool ‚apt-key‘ um diese Schlüssel gekümmert. Man hat ihm den heruntergeladenen Schlüssel im lesbaren Format übergeben und das Tool hat den Schlüssel dann auf magische Art und Weise angewandt ;-). Die Magie bestand daran, dass der Schlüssel neben allen anderen in die Datei /etc/apt/trusted.gpg geschrieben wurde. Genau diese Datei mit allen darin enthaltenen Schlüsseln ist nun nicht mehr zulässig. Stattdessen sollte man eine Datei je Schlüssel im Verzeichnis /etc/apt/trusted.gpg.d haben.

Wie werde ich ‚apt-key is deprecated‘ los?

Um die Meldung loszuwerden, habe ich verschiedene Möglichkeiten gefunden. Die einfachste ist natürlich die, die Schlüsseldatei einfach gleich richtig zu behandeln. Dafür benötigt wird die URL des Schlüssels, damit man diesen auf den eigenen Rechner herunterladen kann. Der Schlüssel muss dann einmal mit GPG aus dem Transportformat ins binäre Format überführt werden. Dafür sorgt dessen Option –dearmor:

Im Fall von Keybase stand ich nun vor dem Problem, dass ich partout die Schlüsseldatei nicht finden konnte. Das Setup-Tool selbst bringt diese hart kodiert mit, wie ich später sah. Aber da hatte ich mein Problem schon anders gelöst ;-). Mit dem apt-key-Tool kann ich mir den Schlüssel auch so exportieren. Für Migrationen ist das vielleicht sogar der schnellere Weg.

Zunächst muss der Schlüssel gefunden werden:

In der dritten Zeile steht der „Name“ des Schlüssels. Den kann man dann einfach exportieren und exakt so wie oben beschrieben weiterverarbeiten:

Weniger galante Lösung

Bei meiner Suche nach einer Lösung bin ich auch auf den weniger galanten Weg gestoßen, die Datei ‚trusted.gpg‘ einfach in das Verzeichnis ‚trusted.gpg.d‘ zu kopieren. Aber ich denke, mit den paar Befehlen des vorherigen Absatzes ist das Problem eher im Sinne der Erfinder gelöst.

2 Antworten

  1. pinke Helga sagt:

    Im Sinne der Erfinder ist, die gpg-Datei fremder Pakete in /etc/apt/keyrings abzulegen und einen signed-by Eintrag in die /etc/apt/apt-sources-lists.d/NAME.list einzutragen. /etc/apt/trusted.gpg.d/ sollte auch „trusted“ bleiben und ist den distributionseigenen Paketquellen vorbehalten. Ansonsten kann ein Angreifer auch gefälschte Debian/Ubuntu Pakete signieren. Wenn schon 3rd party, dann so wenig Kontrolle wie mögich abgeben.
    https://wiki.ubuntuusers.de/apt/Schl%C3%BCsselverwaltung/

  2. pinke Helga sagt:

    btw.: apt-key export NAME tut es statt der ID.
    Will man mehrere Schlüssel übertragen, hilft ein kleines Script
    k=$(apt-key export „$1“) && gpg –dearmor -o „/etc/apt/keyrings/$1.gpg“ <<<"$k"

    Mit sed im Script könnte man jetzt noch automatisch die sources lists anpassen.

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.