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 vonhttps://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
:dergpg
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 vongpg --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!