ไดเรกทอรี. GNupg ใหม่: นำเข้าคีย์ลับเก่าไปสู่การติดตั้งใหม่


9

ฉันได้ติดตั้งระบบปฏิบัติการใหม่ (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

ก่อนอื่นคุณกำลังทำ "no-op" อยู่ 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 ที่มีอยู่ไปเป็นรูปแบบคีย์บ็อกซ์อันดับแรกให้คุณสำรองค่าความน่าเชื่อถือของคุณจากนั้นเปลี่ยนชื่อไฟล์เป็น (ตัวอย่าง) 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 โปรดจำไว้ว่าในกรณีนี้คุณมีกุญแจสาธารณะสองชุด ค่าความน่าเชื่อถือของตัวเองจะถูกเก็บไว้โดย 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สร้างผลผลิตที่เป็นที่รู้จัก ดังนั้นให้ฉันดูสิ่งที่ฉันได้ตอนนี้
Diagon

Works! และขอขอบคุณสำหรับข้อมูลการอัพเกรด มีประโยชน์มาก
Diagon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.