ส่งออก Reprepro ไม่สามารถหาคีย์การลงนาม


13

เรามีพื้นที่เก็บข้อมูลเดเบียนส่วนตัวที่ถูกตั้งค่าเมื่อหลายปีก่อนโดยผู้ดูแลระบบก่อนหน้านี้ แพ็คเกจถูกลงชื่อโดยคีย์เก่า 7610DDDE (ซึ่งฉันต้องเพิกถอน) ดังที่แสดงไว้ที่นี่สำหรับผู้ใช้รูทบนเซิร์ฟเวอร์ repo

# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub   1024D/2D230C5F 2006-01-03 [expired: 2007-02-07]
uid                  Debian Archive Automatic Signing Key (2006)  <ftpmaster@debian.org>

pub   1024D/7610DDDE 2006-03-03 [revoked: 2016-03-31]
uid                  Archive Maintainer <root@xxxxxxxxxx.com>

pub   4096R/DD219672 2016-04-18
uid                  Archive Maintainer <root@xxxxxxxxxx.com>

คำสั่งทั้งหมดด้านล่างนี้เป็นผู้ใช้รูท ฉันแก้ไขไฟล์ที่เก็บ / conf / distributions เพื่อใช้คีย์ย่อยใหม่ที่ฉันสร้างขึ้นอย่างชัดเจนสำหรับการเซ็นชื่อ:

Architectures: i386 amd64 source
Codename: unstable
Components: main
...
SignWith: DD219672

แต่เมื่อฉันใช้ dput เพื่ออัพเดทแพ็คเกจฉันได้รับ

Could not find any key matching 'DD219672'!
ERROR: Could not finish exporting 'unstable'!
This means that from outside your repository will still look like before (and
should still work if this old state worked), but the changes intended with this
call will not be visible until you call export directly (via reprepro export)

และเมื่อฉันรัน reprepro export โดยตรงฉันจะได้รับ:

# reprepro -V export unstable
Exporting unstable...
 generating main/Contents-i386...
 generating main/Contents-amd64...
Could not find any key matching 'DD219672'!
ERROR: Could not finish exporting 'unstable'!

ฉัน Googled และพบว่ามีเธรดเก่าสองสามตัวที่บ่งบอกถึงปัญหาที่อาจเกิดขึ้นกับ reprepro ในการค้นหาไดเรกทอรี gnupg ที่เหมาะสม ... ดังนั้นฉันจึงลองด้วยผลลัพธ์เดียวกันกับข้างบน:

# GNUPGHOME=/root/.gnupg reprepro -V export unstable

หนึ่งเธรดแนะนำให้ทดสอบคีย์โดยการลงชื่อไฟล์ดัมมี่ซึ่งดูเหมือนว่าจะทำงานได้ดี ... อย่างน้อยก็ไม่มีรายงานข้อผิดพลาดและฉันลงเอยด้วยไฟล์ bla.gpg 576 ไบต์หลังจากเสร็จสิ้น

# touch bla
# gpg -u DD219672 --sign bla

หน้า reprepro ยังแนะนำว่า "หากมีปัญหาเกี่ยวกับการเซ็นชื่อคุณสามารถลองใช้ค่าgpg --list-secret-keysเพื่อดูว่า gpg สามารถ interprete ค่าได้อย่างไรถ้าคำสั่งนั้นไม่มีรายการคีย์หรือหลาย ๆ ลองค้นหา ค่าอื่น ๆ (เช่นรหัส), gpg นั้นสามารถเชื่อมโยงกับคีย์เฉพาะได้ง่ายขึ้น " ดังนั้นฉันจึงตรวจสอบเช่นกันและได้รับ:

# gpg --list-secret-keys DD219672
sec   4096R/DD219672 2016-04-18
uid                  Archive Maintainer <root@xxxxxxxxxx.com>

และในที่สุดฉันก็สามารถติดต่อกับผู้ดูแลระบบ sys ที่ตั้งค่า repros ของเราครั้งแรกและเขาแนะนำให้ลองใช้คีย์โดยไม่ต้องใช้ข้อความรหัสผ่าน ดังนั้นฉันจึงสร้างรหัสลงนามใหม่ DD219672 เผยแพร่ผ่านขั้นตอนข้างต้นอีกครั้ง แต่ด้วยผลลัพธ์เดียวกัน

วันนี้หลังจากอ่านเพิ่มเติมและศึกษาหน้า man และสังเกตว่า pgp-agent เริ่มต้นโดยอัตโนมัติเมื่อฉันเรียกใช้ reprepro ฉันตัดสินใจที่จะไล่ล่าสักพัก

ฉันเพิ่ม gpg-agent.conf ด้วย

debug-level 7
log-file    /root/gpg.agent.log
debug-all

และฉันเห็นได้ในบันทึกว่าตัวแทน gpg ไม่พบกุญแจ

2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK Pleased to meet you, process 18903
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- RESET
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- OPTION ttyname=/dev/pts/0
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- OPTION ttytype=xterm-256color
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- GETINFO version
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> D 2.1.11
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- OPTION allow-pinentry-notify
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- OPTION agent-awareness=2.1.0
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- AGENT_ID
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> ERR 67109139 Unknown IPC command <GPG Agent>
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- HAVEKEY C2C5C59E5E90830F314ABB66997CCFAACC5DEA2F 416E8A33354912FF4843D52AAAD43FBF206252D9 8CE77065EA6F3818A4975072C8341F32CB7B0EF0
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> ERR 67108881 No secret key <GPG Agent>
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- [eof]

ฉันยังไม่สามารถระบุได้ว่าตัวแทน gpg กำลังค้นหากุญแจที่อยู่ในรายการ HAVKEY และวิธีชี้ไปในทิศทางที่ถูกต้องเพื่อค้นหาคีย์ใหม่ DD219672 เพื่อลงนามแพ็คเกจที่อัปเดตของเรา

คำตอบ:


19

ฉันมีปัญหาเดียวกันและหลังจากความยุ่งยากในที่สุดก็ติดตามสิ่งที่เกิดขึ้น

repreproเครื่องมือที่ใช้ gpgme gnupg2ซึ่งจะขึ้นอยู่กับ รีลีสล่าสุดนั้นเปลี่ยนวิธีจัดการกับริงคีย์ลับ: https://www.gnupg.org/faq/whats-new-in-2.1.html

gpg ใช้เพื่อเก็บคู่กุญแจสาธารณะในสองไฟล์: pubring.gpgและ secring.gpg... ด้วย GnuPG 2.1 สิ่งนี้ได้เปลี่ยนไป ... เพื่อความสะดวกในการย้ายข้อมูลไปยังวิธีที่ไม่มีการรักษาความปลอดภัย gpg จะตรวจจับการปรากฏตัวของ secring.gpgและแปลงกุญแจแบบทันที ไปยังที่เก็บคีย์ของ gpg-agent (นี่คือprivate-keys-v1.dไดเรกทอรีด้านล่างไดเรกทอรีบ้าน GnuPG ( ~/.gnupg)) สิ่งนี้ทำได้เพียงครั้งเดียวและsecring.gpggpg ที่มีอยู่ จะไม่ถูกสัมผัสอีกต่อไป สิ่งนี้อนุญาตให้มี GnuPG เวอร์ชันเก่าร่วมกับ GnuPG 2.1 อย่างไรก็ตามการเปลี่ยนแปลงใด ๆ กับคีย์ส่วนตัวที่ใช้ gpg ใหม่จะไม่ปรากฏขึ้นเมื่อใช้ GnuPG เวอร์ชัน 2.1 และในทางกลับกัน

ดังนั้นหากคุณสร้างคีย์ใหม่ด้วย gpg, gpg2 จะไม่เห็นและในทางกลับกัน

การแก้ไขด่วนที่ใช้งานได้สำหรับฉัน:

gpg --export-secret-keys | gpg2 --import -

และถ้าคุณต้องการที่จะไปทางอื่นแน่นอน:

gpg2 --export-secret-keys | gpg --import -

คุณอาจต้องการ / ต้องการเพิ่มทั้งนี้ขึ้นอยู่กับการตั้งค่าของคุณ --export-secret-subkeys

หลังจากทำตามข้างต้นแล้วให้repreproทำงานกับรหัสใหม่ของฉันอย่างถูกต้อง


2
เพื่อนคุณสมควรได้รับเหรียญสำหรับติดตามว่า
Andrew Schulman

2

สำหรับผมปัญหาคือการที่ฉันสร้างขึ้นแป้นเป็นผู้ใช้และวิ่ง reprepro เป็นราก

สิ่งที่เกิดขึ้นก็คือว่ากุญแจที่ฉันสร้าง "โดยไม่ต้องsudo" pubring.gpgจะถูกเพิ่มในท้องถิ่นของฉัน เมื่อฉันรันsudo reprepro ...ฉันรันมันเป็นรูทดังนั้นมันจึงพยายามหากุญแจที่อยู่ในรูทpubring.gpgและเห็นได้ชัดว่าไม่ได้หามัน

การแก้ปัญหาคือการเรียกใช้gpgคำสั่งทั้งหมดเป็นราก (eq. sudo -iแล้วgpg --gen-key) ตรวจสอบให้แน่ใจเมื่อคุณเรียกใช้sudo gpg --list-keysคุณเห็นคีย์และบรรทัดที่/root/.gnupg/pubring.gpgคุณต้องการ

หวังว่าจะช่วย!

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