Thư mục .gnupg mới: Nhập khóa bí mật cũ vào bản cài đặt mới


9

Tôi đã cài đặt lại hệ điều hành của mình (Ubuntu 16.04) và có một thư mục .gnupg cũ có chứa:

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

Tôi muốn nhập khóa công khai & khóa riêng của mình vào gnupg mới. (Tôi không đơn giản sao chép thư mục .gnupg vào bản cài đặt mới, vì tôi hiểu rằng gnupg2 mới có một số khác biệt về định dạng cơ sở dữ liệu là một phần của các tùy chọn mã hóa EC mới.)

Sau đây làm việc cho các khóa công khai nhưng không thành công cho các khóa bí mật:

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

Sau này trả lời với:

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

Lưu ý rằng nó không mở được vòng bí mật mới của tôi . Nó đưa ra cùng một lỗi khi cố gắng xuất thành tệp:

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

Vì khóa bí mật của tôi có phần riêng của khóa chính bị tước, tôi cũng đã thử tương tự --export-secret-subkeys, nhưng, phản hồi là như nhau. Đặt ID khóa của tôi (địa chỉ email) sau khi xuất cũng không hoạt động. Mặt khác, tôi có thể liệt kê các phím:

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

(Tôi đang giả sử "Khóa bị mất" đề cập đến khóa chính bí mật bị tước.) Có ai có thể hướng dẫn tôi cách giải quyết vấn đề này không?

Với sự giúp đỡ của @Jens (bên dưới), các công việc sau:

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

Câu trả lời:


7

Trước hết, bạn đang làm một loại "không-op". gpgvẫn là GnuPG 1.4.20 trên Ubuntu 16.04, trong khi gpg2thực hiện một bước nhảy từ GnuPG 2.0.28 đến 2.1.11. Sau đó, trong khi GnuPG 2.1 thực hiện một số thay đổi đối với các định dạng tệp (định dạng kho khóa mới "hộp khóa" / .kbxvà hợp nhất khóa bí mật vào công khai), nó vẫn tương thích và sẽ thực hiện khóa bí mật hợp nhất khi gọi lần đầu tiên gpg2. Định dạng khóa vẫn giữ nguyên kiểu cũ trừ khi bạn tự chuyển đổi nó . Định dạng cũ được hỗ trợ đầy đủ, định dạng mới chỉ cung cấp các cải tiến hiệu suất. Đường dẫn di chuyển được đề xuất sang định dạng hộp khóa mới đang chuyển đổi trong thư mục GnuPG cũ thay vì chuyển sang một định dạng hoàn toàn mới:

Để chuyển đổi tệp pubring.gpg hiện có sang định dạng hộp khóa, trước tiên, bạn sao lưu các giá trị riêng, sau đó đổi tên tệp thành (ví dụ) khóa công khai, do đó, nó sẽ không được nhận dạng bởi bất kỳ phiên bản GnuPG nào, sau đó chạy nhập và cuối cùng khôi phục các giá trị riêng:

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

Sau đó, bạn có thể đổi tên tệp công khai trở lại để có thể được sử dụng bởi các phiên bản GnuPG cũ hơn. Hãy nhớ rằng trong trường hợp này bạn có hai bản sao khóa công khai độc lập. Các giá trị riêng được giữ bởi tất cả các phiên bản gpg trong tệp tin Trustdb.gpg nhưng các biện pháp phòng ngừa ở trên cần được thực hiện để giữ chúng trong quá trình nhập.

Xem xét thông báo lỗi bạn đã đăng, có vẻ như một số quyền trên thư mục chính mới ~/.gnupghoặc khóa bí mật ~/.gnupg/secring.gpglà không đủ để tạo khóa. Điều này thường xảy ra nếu GnuPG được gọi từ người dùng root một cách tình cờ.

Thông báo từ --list-keyskhông phải là một đầu ra bình thường, nhưng dường như là một thông báo lỗi. Để in một keyring tùy tiện, sử dụng --no-default-keyring--secret-keyringtùy chọn và --list-secret-keyscommdn (và nói chung luôn có các tùy chọn trước lệnh cho GnuPG):

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

Ok, bạn đóng đinh nó về vấn đề sở hữu. Secring.gpg mới của tôi được sở hữu bởi root. Ngoài ra, sử dụng --no-default-keyring--secret-keyringtrước khi --list-secret-keystạo ra một đầu ra dễ nhận biết. Vì vậy, hãy để tôi xem những gì tôi có bây giờ.
chéo

Làm! Và cảm ơn thông tin nâng cấp. Rất hữu ích.
chéo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.