GNU/Linux >> LINUX-Kenntnisse >  >> Debian

apt-key ist veraltet. So fügen Sie OpenPGP-Repository-Signaturschlüssel ohne sie auf Debian, Ubuntu, Linux Mint, Pop! _OS usw.

In diesem Artikel wird erläutert, wie OpenPGP-Schlüssel von Drittanbietern und APT-Repositories sicher zu Debian-, Ubuntu- und darauf basierenden Linux-Distributionen wie Linux Mint, Pop! _OS, Elementary OS usw., um die veralteten apt-key zu ersetzen .

Wenn Sie versuchen, einen APT-Repository-Schlüssel mit apt-key hinzuzufügen Auf Debian-, Ubuntu- und darauf basierenden Linux-Distributionen sehen Sie die folgende Meldung:Warnung:apt-key ist veraltet. Verwalten Sie Schlüsselbunddateien stattdessen in Trusted.gpg.d (siehe apt-key (8)) “.

die apt-key Manpage erwähnt, dass die „Die Verwendung von apt-key ist obsolet, mit Ausnahme der Verwendung von apt-key del in Betreuerskripten, um vorhandene Schlüssel aus dem Hauptschlüsselbund zu entfernen “. Was mehr ist,“apt-key wird zuletzt in Debian 11 und Ubuntu 22.04 verfügbar sein .

Der Grund für diese Änderung ist, dass beim Hinzufügen eines OpenPGP-Schlüssels, der zum Signieren eines APT-Repositorys verwendet wird, /etc/apt/trusted.gpg oder /etc/apt/trusted.gpg.d , wird der Schlüssel von APT auf allen anderen Repositories verwendet, die auf dem System konfiguriert sind und die a. signed-by bedingungslos vertraut haben (siehe unten) Option, sogar die offiziellen Debian/Ubuntu-Repositories. Infolgedessen wird jedes inoffizielle APT-Repository, zu dem sein Signaturschlüssel hinzugefügt wurde, /etc/apt/trusted.gpg oder /etc/apt/trusted.gpg.d kann jedes Paket auf dem System ersetzen. Diese Änderung wurde also aus Sicherheitsgründen (Ihrer Sicherheit) vorgenommen.

Es ist auch erwähnenswert, dass während der apt-key Die Einstellungsmeldung lautet:„Stattdessen Schlüsselbunddateien in Trusted.gpg.d verwalten “, sagt das Debian-Wiki etwas anderes. Das liegt daran, dass OpenPGP-Schlüssel zu /etc/apt/trusted.gpg hinzugefügt werden und /etc/apt/trusted.gpg.d ist, wie oben erwähnt, genauso unsicher.

Sie können apt-key vorerst weiterhin verwenden, da es immer noch funktioniert. Es wäre jedoch eine gute Idee, mit der Umstellung auf die Verwendung von signed-by zu beginnen Option wie unten erläutert, insbesondere wenn Sie ein Drittanbieter-Repository unterhalten.

Was ist also der richtige und sichere Weg, um (inoffizielle) Drittanbieter-Repositories und ihre OpenPGP-Signaturschlüssel auf Debian-, Ubuntu- und darauf basierenden Linux-Distributionen wie Linux Mint, Pop! _OS, Elementary OS usw. von veralteten apt-Schlüsseln?

1. Laden Sie den APT-Repository-Schlüssel herunter

Laut dem Debian-Wiki sollte der Schlüssel beispielsweise per HTTPS an einen Ort heruntergeladen werden, der nur von Root /usr/share/keyrings geschrieben werden kann . Der Schlüsselname sollte einen Kurznamen enthalten, der das Repository beschreibt, gefolgt von archive-keyring . Zum Beispiel, wenn das Repository myrepository heißt , sollte die Schlüsseldatei myrepository-archive-keyring.gpg heißen .

Die OpenPGP-Schlüsseldatei kann ASCII-armiert sein oder nicht. So überprüfen Sie, ob eine Schlüsseldatei ASCII-geschützt ist , laden Sie die Schlüsseldatei herunter und führen Sie diesen Befehl aus (Beachten Sie, dass die Schlüsselerweiterung .gpg, .asc, .key und wahrscheinlich andere sein kann ):

file <repo-key>.gpg

Wenn die Ausgabe dieses Befehls der folgenden ähnelt, ist der Schlüssel ASCII-armiert:

repo-key.gpg: PGP public key block Public-Key (old)

Hier erfahren Sie jedoch, wie Sie einen Repository-Signaturschlüssel ordnungsgemäß und sicher herunterladen und zu Ihrem System hinzufügen können:

  • Für ASCII-geschützte OpenPGP-Schlüssel

Um einen solchen OpenPGP-Schlüssel mit wget herunterzuladen und Ihrem System hinzuzufügen, verwenden Sie:

wget -O- <https://example.com/key/repo-key.gpg> | gpg --dearmor | sudo tee /usr/share/keyrings/<myrepository>-archive-keyring.gpg

Was alles in diesem Befehl bedeutet / bedeutet:

  • wget lädt den Schlüssel von https://example.com/key/repo-key.gpg herunter und übergibt den Schlüssel an stdout (-O- ). Ersetzen Sie die URL hier durch die URL des Schlüssels, den Sie herunterladen und Ihrem System hinzufügen möchten
  • gpg --dearmor :der gpg Command ist das OpenPGP-Verschlüsselungs- und Signiertool; es ist --dearmor Option entpackt die Eingabe aus einer OpenPGP-ASCII-Rüstung
  • sudo tee /usr/share/keyrings/<myrepository>-archive-keyring.gpg :als Superuser (sudo ), liest die Standardeingabe, in diesem Fall die Ausgabe von gpg --dearmor , und schreiben Sie dies in /usr/share/keyrings/<myrepository>-archive-keyring.gpg Datei. Ersetzen Sie diesen <myrepository> name mit einem aussagekräftigen Namen für den Repository-Schlüssel, den Sie hinzufügen

Um beispielsweise das APT-Repository zur Signal-Anwendung hinzuzufügen, verwenden Sie:

wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/signal-archive-keyring.gpg

Oder verwenden Sie den als Beispiel angegebenen Befehl im Debian-Wiki (Sie müssen ihn als root ausführen, z. B. nach dem Ausführen von sudo -i; verwendet curl Statt wget um den Schlüssel herunterzuladen):

curl <https://example.com/key/repo-key.gpg> | gpg --dearmor > /usr/share/keyrings/<myrepository>-archive-keyring.gpg

Beispiel für die Verwendung dieses Befehls zum Hinzufügen des Signal-APT-Repositorys:

curl https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > /usr/share/keyrings/signal-archive-keyring.gpg

  • Für nicht-ASCII-gepanzerte OpenPGP-Schlüssel

Laden Sie den OpenPGP-Schlüssel mit wget herunter und fügen Sie ihn Ihrem System hinzu mit:

wget -O- <https://example.com/key/repo-key.gpg> | sudo tee /usr/share/keyrings/<myrepository-archive-keyring.gpg>

Oder verwenden Sie den als Beispiel angegebenen Befehl im Debian-Wiki (Sie müssen ihn als root ausführen, z. B. nach dem Ausführen von sudo -i ):

wget -O /usr/share/keyrings/<myrepository-archive-keyring.gpg> <https://example.com/key/repo-key.gpg>

Ich habe hier kein Beispiel hinzugefügt, weil ich kein Drittanbieter-Repository finden konnte, das einen nicht-ASCII-geschützten OpenPGP-Schlüssel verwendet.

  • Wie man OpenPGP-Schlüssel direkt von einem Schlüsselserver in eine Datei in /usr/share/keyrings importiert :

sudo gpg --no-default-keyring --keyring /usr/share/keyrings/<myrepository>-archive-keyring.gpg --keyserver <hkp://keyserver.ubuntu.com:80> --recv-keys <fingerprint>

Statt hkp://keyserver.ubuntu.com:80 , können Sie bei Bedarf einen anderen Schlüsselserver verwenden.

Beispiel, in dem wir den OpenPGP-Schlüssel des Linux Uprising Shutter PPA in /usr/share/keyrings/linux-uprising-shutter-archive-keyring.gpg importieren (Sie können den Fingerabdruck erhalten, indem Sie auf der PPA-Seite auf den grünen Link „Technische Details zu diesem PPA“ klicken – er befindet sich unter „Diesen PPA zu Ihrem System hinzufügen“):

sudo gpg --no-default-keyring --keyring /usr/share/keyrings/linux-uprising-shutter-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 1CC3D16E460A94EE17FE581CEA8CACC073C3DB2A

Das könnte Ihnen auch gefallen:So verhindern Sie, dass ein Paket in Ubuntu, Debian oder Linux Mint [APT] aktualisiert wird


2. Fügen Sie den Eintrag source.list für das Repository hinzu

Repository-Einträge von Drittanbietern sollten der Liste /etc/apt/sources.list.d hinzugefügt werden Verzeichnis und nicht direkt im /etc/apt/sources.list Datei.

Zuvor gab es eine sources.list-Datei aus dem /etc/apt/sources.list.d Verzeichnis würde so aussehen:

deb https://repository.example.com/debian/ stable main

Um den in Schritt 1 hinzugefügten Schlüssel verwenden zu können, muss der Eintrag in der sources.list nun jedoch so aussehen (/etc/apt/sources.list.d/<myrepository.list> ):

deb [signed-by=/usr/share/keyrings/<myrepository>-archive-keyring.gpg] <https://repository.example.com/debian/ stable main>

Hierbei ist wichtig zu beachten, dass wenn Sie auch den arch=amd64 verwenden Option zusammen mit signed-by müssen Sie die beiden Optionen wie folgt durch ein Leerzeichen trennen:

deb [arch=amd64 signed-by=/usr/share/keyrings/<myrepository>-archive-keyring.gpg] <https://repository.example.com/debian/ stable main>

Um beispielsweise das Signal-Repository zu Ihrem Debian-/Ubuntu-System hinzuzufügen, erstellen Sie eine Datei (als root; zum Beispiel, um den Nano-Befehlszeilen-Texteditor mit dieser Datei zu öffnen:sudo nano /etc/apt/sources.list.d/signal.list ) mit dem Namen signal.list in /etc/apt/sources.list.d mit folgendem Inhalt (vorausgesetzt, Sie haben den Schlüssel bereits wie oben beschrieben als /usr/share/keyrings/signal-archive-keyring.gpg heruntergeladen ):

deb [arch=amd64 signed-by=/usr/share/keyrings/signal-archive-keyring.gpg] https://updates.signal.org/desktop/apt xenial main

Denken Sie daran, sudo apt update auszuführen nachdem Sie einen neuen Signaturschlüssel und ein neues Repository hinzugefügt haben, um die Softwarequellen zu aktualisieren.

Sie können das Repository auch im Deb822-Dateiformat hinzufügen, aber um die Dinge nicht weiter zu verkomplizieren, werde ich das hier nicht erklären. Sie können dies im Debian-Wiki nachlesen.

Das könnte Ihnen auch gefallen:So finden Sie das Paket, das eine Datei (installiert oder nicht) auf Ubuntu, Debian oder Linux Mint bereitstellt

Entfernen eines vorhandenen OpenPGP-Schlüssels, der dem vertrauenswürdigen APT-Schlüsselbund (/etc/apt/trusted.gpg oder /etc/apt/trusted.gpg.d) hinzugefügt wurde

Wenn Sie OpenGPG-Schlüssel wie oben beschrieben hinzufügen, sollten Sie denselben Schlüssel aus /etc/apt/trusted.gpg oder /etc/apt/trusted.gpg.d entfernen, wenn Sie ihn dort zuvor hinzugefügt haben. Ohne dies gibt es keinen zusätzlichen Sicherheitsgewinn.

Entfernen Sie vorhandene OpenPGP-Schlüssel aus /etc/apt/trusted.gpg.d Verzeichnis sollte ziemlich einfach sein. Das liegt daran, dass der Schlüsseldateiname ziemlich aussagekräftig sein sollte. Beispielsweise lautet der Dateiname des GPG-Schlüssels des Tor-Repositorys aus diesem Verzeichnis auf meinem System deb.torproject.org-keyring.gpg

Um bereits vorhandene Schlüssel loszuwerden, die hinzugefügt wurden /etc/apt/trusted.gpg.d , müssen Sie nur die Schlüsseldateien entfernen. Sie müssen dies als root tun, öffnen Sie also entweder den Dateimanager Ihrer Wahl als root mit admin:// (Um beispielsweise einen Ort als root in Nautilus zu öffnen, drücken Sie Ctrl + L Sie können also in der Adressleiste admin:///etc/apt/trusted.gpg.d eingeben und eingeben ) oder von der Kommandozeile entfernen mit:

sudo rm /etc/apt/trusted.gpg.d/<myrepository-keyring.gpg>

Die folgenden Anweisungen funktionieren auch zum Entfernen von Schlüsseln aus dem /etc/apt/trusted.gpg.d Verzeichnis.

Wie für Entfernung von APT-GPG-Schlüsseln, die in /etc/apt/trusted.gpg gespeichert sind , die Sache ist etwas komplizierter. Verwenden Sie den folgenden Befehl, um alle APT-OpenPGP-Schlüssel aufzulisten, die in beide /etc/apt/trusted.gpg importiert wurden und /etc/apt/trusted.gpg.d :

apt-key list

Die in /etc/apt/trusted.gpg gespeicherten Schlüssel sollte oben aufgeführt sein, gefolgt von den Schlüsseln aus /etc/apt/trusted.gpg.d Verzeichnis. Sie müssen den Schlüssel uid überprüfen um herauszufinden, welcher Schlüssel entfernt werden muss. Normalerweise sollte die UID das Unternehmen oder den Benutzer zeigen, der den Schlüssel signiert hat, gefolgt von seiner E-Mail-Adresse.

Schlüssel von /etc/apt/trusted.gpg sind unter apt-key aufgeführt Liste wie folgt (Beispiel):

pub   rsa4096 2016-04-22 [SC]

      B9F8 D658 297A F3EF C18D  5CDF A2F6 83C5 2980 AECF

uid           [ unknown] Oracle Corporation (VirtualBox archive signing key) <[email protected]>

sub   rsa4096 2016-04-22 [E]

Die Schlüssel-ID sind die letzten 8 Zeichen des Fingerabdrucks des GPG-Schlüssels (in diesem Beispiel sind dies 2980AECF ).

Um einen Schlüssel zu löschen (entweder aus /etc/apt/trusted.gpg oder /etc/apt/trusted.gpg.d ), können Sie jetzt verwenden:

sudo apt-key del <KEY-ID>

Um beispielsweise den Schlüssel aus dem obigen Beispiel zu löschen, verwenden Sie:

sudo apt-key del 2980AECF

Das könnte Ihnen gefallen:Wie man alle Pakete in einem Repository auf Ubuntu, Debian oder Linux Mint auflistet [APT]

Referenzen:

  • https://wiki.debian.org/DebianRepository/UseThirdParty
  • https://askubuntu.com/a/1307181/1149075
  • https://zebnemeth.wordpress.com/2021/01/15/install-signal-desktop-using-gpg/
  • https://github.com/docker/docker.github.io/issues/11625

Danke an u / ZebNemeth für diesen Vorschlag!


Debian
  1. So kompilieren und installieren Sie wxWidgets unter Ubuntu/Debian/Linux Mint

  2. So installieren Sie Oracle Java 16 auf Debian, Ubuntu, Pop! _OS oder Linux Mint mit dem APT PPA-Repository

  3. So installieren Sie Oracle Java 15 unter Ubuntu, Debian oder Linux Mint mit dem APT PPA-Repository

  4. So verhindern Sie, dass ein Paket in Ubuntu, Debian oder Linux Mint aktualisiert wird [APT]

  5. So listen Sie alle Pakete in einem Repository unter Ubuntu, Debian oder Linux Mint auf [APT]

Wie man ein Repository zu Debian hinzufügt

So installieren Sie Visual Studio Code unter Ubuntu 18.04 / Linux Mint 19 und Debian 9

So laden Sie Pakete mit Abhängigkeiten lokal in Ubuntu, Debian, Linux Mint, Pop OS herunter

So richten Sie SSH-Schlüssel unter Debian 11 Linux ein

So installieren Sie Wine Staging, Development oder Stable unter Ubuntu, Linux Mint oder Debian 10 (Vermeiden Sie Abhängigkeitsprobleme)

So installieren und konfigurieren Sie Node.js und npm in Ubuntu, Debian oder Linux Mint