Neues .gnupg-Verzeichnis: Importieren Sie alte geheime Schlüssel in die Neuinstallation


9

Ich habe mein Betriebssystem (Ubuntu 16.04) neu installiert und habe ein altes .gnupg-Verzeichnis mit:

gpg-agent.conf  
gpg-agent-info-<hostname> 
gpg.conf  
private-keys-v1.d  
pubring.gpg  
secring.gpg  
S.gpg-agent  
trustdb.gpg

Ich möchte meine alten öffentlichen und privaten Schlüssel in das neue Gnupg importieren. (Ich habe das .gnupg-Verzeichnis nicht einfach in die neue Installation kopiert, da ich verstehe, dass das neue gnupg2 einige Unterschiede im Datenbankformat aufweist, die Teil der neuen EC-Verschlüsselungsoptionen sind.)

Folgendes funktionierte für die öffentlichen Schlüssel, schlug jedoch für die geheimen Schlüssel fehl:

gpg --export --keyring=~/.gnupg.old/pubring.gpg | gpg --import
gpg --export-secret-keys --keyring=~/.gnupg.old/secring.gpg | gpg --import

Letzterer antwortete mit:

gpg: can't open `~/.gnupg/secring.gpg'  <== New Secret Keyring
gpg: WARNING: nothing exported
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0

Beachten Sie, dass mein neuer geheimer Ring nicht geöffnet werden kann . Beim Exportieren in eine Datei wird derselbe Fehler ausgegeben:

gpg --export-secret-keys --keyring=~/.gnupg.old/secring.gpg > secret.asc

gpg: can't open `~/.gnupg/secring.gpg'  <== New Secret Keyring
gpg: WARNING: nothing exported

Da bei meinem geheimen Schlüssel der private Teil des Hauptschlüssels entfernt wurde, habe ich das auch mit versucht --export-secret-subkeys, aber die Antwort war dieselbe. Das Eingeben meiner Schlüssel-ID (E-Mail-Adresse) nach dem Export funktioniert ebenfalls nicht. Ich kann andererseits die Schlüssel auflisten:

gpg --list-keys --keyring=~/.gnupg.old/secring.gpg

gpg: Oops; key lost!
node 0x1e7ee00 01/00 type=secret-key
node 0x1e9cbd0 00/00 type=user-id  "Me <Me@home.com>" ....
node 0x1e99dd0 00/00 type=signature  class=13 keyid=XXXXXXXX ts=1383637282
node 0x1e9c510 00/00 type=secret-subkey
node 0x1eaa210 00/00 type=signature  class=18 keyid=XXXXXXXX ts=1449138073
node 0x1eaf1f0 00/00 type=secret-subkey
node 0x1eaf580 00/00 type=signature  class=18 keyid=XXXXXXXX ts=138363647

(Ich gehe davon aus, dass "Schlüssel verloren" sich auf den abisolierten geheimen Hauptschlüssel bezieht.) Kann mich jemand anweisen, wie ich das lösen soll?

Mit Hilfe von @Jens (unten) funktioniert Folgendes:

gpg --no-default-keyring --secret-keyring=~/.gnupg.old/secring.gpg --export-secret-keys | gpg --import

Antworten:


7

Zunächst einmal machen Sie eine Art "No-Op". gpgist immer noch GnuPG 1.4.20 unter Ubuntu 16.04, während gpg2ein Sprung von GnuPG 2.0.28 auf 2.1.11 gemacht wurde. Während GnuPG 2.1 einige Änderungen an den Dateiformaten vorgenommen hat (neues Keystore-Format "keybox" / .kbxund Zusammenführen des geheimen Schlüsselbunds mit dem öffentlichen), ist es weiterhin kompatibel und führt den geheimen Schlüsselring beim ersten Aufruf von zusammen gpg2. Das Schlüsselringformat bleibt das alte , es sei denn, Sie konvertieren es manuell . Das alte Format wird vollständig unterstützt, das neue Format bietet lediglich Leistungsverbesserungen. Der vorgeschlagene Migrationspfad zum neuen Keybox-Format wird im alten GnuPG-Verzeichnis konvertiert, anstatt in ein völlig neues zu wechseln :

Um eine vorhandene pubring.gpg-Datei in das Keybox-Format zu konvertieren, sichern Sie zuerst die ownertrust-Werte und benennen die Datei dann in (zum Beispiel) publickeys um, damit sie von keiner GnuPG-Version erkannt wird. Führen Sie dann den Import aus und stellen Sie sie schließlich wieder her Die Werte des Eigentümervertrauens:

$ cd ~/.gnupg
$ gpg --export-ownertrust >otrust.lst
$ mv pubring.gpg publickeys
$ gpg2 --import-options import-local-sigs --import publickeys
$ gpg2 --import-ownertrust otrust.lst

Sie können die publickeys-Datei dann wieder umbenennen, damit sie von älteren GnuPG-Versionen verwendet werden kann. Denken Sie daran, dass Sie in diesem Fall zwei unabhängige Kopien der öffentlichen Schlüssel haben. Die ownertrust-Werte werden von allen gpg-Versionen in der Datei trustdb.gpg beibehalten, es müssen jedoch die oben genannten Vorsichtsmaßnahmen getroffen werden, um sie während eines Imports beizubehalten.

In Anbetracht der von Ihnen geposteten Fehlermeldung scheinen einige Berechtigungen für das neue ~/.gnupgAusgangsverzeichnis oder den geheimen Schlüsselbund ~/.gnupg/secring.gpgnicht ausreichend zu sein, um den Schlüssel zu erstellen. Dies passiert häufig, wenn GnuPG versehentlich vom Root-Benutzer aufgerufen wurde.

Die Nachricht von --list-keysist keine normale Ausgabe, sondern scheint eine Fehlermeldung zu sein. Um einen beliebigen Schlüsselanhänger zu drucken, verwenden Sie die --no-default-keyringund --secret-keyringOptionen und die --list-secret-keyscommdn (und in der Regel immer Optionen voraus Befehle für GnuPG):

gpg --no-default-keyring --secret-keyring=secring.gpg --list-secret-keys

Ok, Sie haben es auf die Eigentumsfrage gebracht. Mein neues secreting.gpg gehörte root. Die Verwendung von --no-default-keyringund --secret-keyringvor --list-secret-keyserzeugt außerdem eine erkennbare Ausgabe. Lassen Sie mich sehen, was ich jetzt habe.
Diagon

Funktioniert! Und danke für die Upgrade-Infos. Sehr hilfreich.
Diagon
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.