Новий каталог .gnupg: імпортуйте старі секретні ключі в нову установку


8

Я перевстановив ОС (Ubuntu 16.04) і маю стару каталог .gnupg, що містить:

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

Я хочу імпортувати свої старі публічні та приватні ключі в новий gnupg. (Я не просто скопіював каталог .gnupg в нову установку, тому що я розумію, що новий gnupg2 має деякі відмінності у форматі бази даних, які є частиною нових параметрів шифрування EC.)

Наступні працювали для відкритих ключів, але не вдавалися до секретних ключів:

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

Останній відповів:

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

Зауважте, що не вдалося відкрити моє нове секретне кільце. Він дає ту саму помилку при спробі експорту в файл:

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

Оскільки у мого секретного ключа приватна частина головного ключа вилучена, я також спробував те ж саме, з --export-secret-subkeys, але відповідь була однаковою. Введення мого ідентифікатора ключа (електронної адреси) після експорту також не працює. Я можу, з іншого боку, перерахувати ключі:

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

(Я припускаю, що "Ключ загублений" відноситься до позбавленого секретного головного ключа.) Чи може хтось направити мене, як це вирішити?

За допомогою @Jens (нижче) працює наступне:

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

Відповіді:


7

Перш за все, ти робиш своєрідний "не-оп". gpgвсе ще GnuPG 1.4.20 на Ubuntu 16.04, а gpg2зробив стрибок з GnuPG 2.0.28 до 2.1.11. Тоді, поки GnuPG 2.1 вніс деякі зміни у формати файлів (новий формат зберігання брелоків "keybox" / .kbxта об'єднання секретного брелока в загальнодоступний), він все ще сумісний і зробить секретне введення ключів при першому виклику gpg2. Формат брелока залишається старим, якщо ви не вручну конвертуєте його . Старий формат повністю підтримується, новий формат просто пропонує покращення продуктивності. Запропонований шлях міграції до нового формату скриньки перетворюється в старий каталог GnuPG, а не переходить до абсолютно нового:

Щоб конвертувати існуючий файл pubring.gpg у формат клавіатури, ви спочатку створюєте резервну копію значень Ownertrust, потім перейменовуєте файл у (наприклад) publickeys, щоб його не розпізнали жодна версія GnuPG, потім запустили імпорт та, нарешті, відновили значення власногоресурсу:

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

Потім ви можете перейменувати файл publickeys назад, щоб його можна було використовувати у старих версіях GnuPG. Пам'ятайте, що в цьому випадку у вас є дві незалежні копії відкритих ключів. Значення Ownertrust зберігаються у всіх версіях gpg у файлі trustdb.gpg, але вищезазначені запобіжні заходи потрібно вжити, щоб утримати їх над імпортом.

З огляду на повідомлення про помилку, яке ви опублікували, здається, що деяких дозволів на новий ~/.gnupgдомашній каталог або секретний ~/.gnupg/secring.gpgбрелок недостатньо для створення ключа. Це часто трапляється, якщо випадково викликали GnuPG від кореневого користувача.

Повідомлення з --list-keysне є нормальним висновком, але, здається, є повідомлення про помилку. Щоб надрукувати довільну прив'язку ключів, використовуйте параметри --no-default-keyringта --secret-keyringпараметри та --list-secret-keyscommdn (і, як правило, завжди є параметри, що передують командам для GnuPG):

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

Гаразд, ви прибили це питання щодо права власності. Мій новий secring.gpg належав root. Крім того, використання --no-default-keyringта --secret-keyringперед цим --list-secret-keysдає розпізнаваний вихід. Отже, дозвольте мені побачити, що я зараз маю.
Діагон

Працює! І дякую за інформацію про оновлення. Дуже корисний.
Діагон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.