เรื่องวุ่นๆ ของ debian apt key
สองวันที่ผ่านมา ผู้ใช้ debian unstable อาจเจอคำเตือนเมื่อ upgrade ผ่าน apt เกี่ยวกับลายเซ็นอิเล็กทรอนิกส์ ซึ่งหมดอายุลง แล้วจะมีคำถามว่าจะติดตั้งแพกเกจโดยไม่ตรวจสอบหรือไม่ ทำนองนี้:
# apt-get update Get:1 file: unstable Release.gpg [189B] Get:2 file: unstable Release [2102B] Ign file: unstable/main Packages Ign http://linux.thai.net ./ Release.gpg Hit ftp://linux.thai.net unstable Release.gpg Ign file: unstable/contrib Packages Ign http://linux.thai.net ./ Release Ign file: unstable/non-free Packages Ign http://linux.thai.net ./ Packages Hit ftp://linux.thai.net unstable Release Hit http://linux.thai.net ./ Packages Hit ftp://linux.thai.net unstable/main Packages Hit ftp://linux.thai.net unstable/contrib Packages Hit ftp://linux.thai.net unstable/non-free Packages Hit ftp://linux.thai.net unstable/main Sources Hit ftp://linux.thai.net unstable/contrib Sources Hit ftp://linux.thai.net unstable/non-free Sources Get:3 ftp://ftp.debian.org unstable Release.gpg [378B] Get:4 ftp://ftp.debian.org unstable Release [38.2kB] Ign ftp://ftp.debian.org unstable Release Get:5 ftp://ftp.debian.org unstable/main Packages [2970kB] Get:6 ftp://ftp.debian.org unstable/contrib Packages [52.1kB] Get:7 ftp://ftp.debian.org unstable/non-free Packages [60.5kB] Fetched 3124kB in 4m19s (12.0kB/s) Reading package lists... Done W: GPG error: ftp://ftp.debian.org unstable Release: The following signatures couldn't be verified because the public key is not avai lable: NO_PUBKEY 010908312D230C5F W: You may want to run apt-get update to correct these problems
apt ตั้งแต่รุ่น 0.6 เป็นต้นมา จะมีการตรวจสอบความครบถ้วนของแพกเกจต่างๆ ด้วยลายเซ็นอิเล็กทรอนิกส์ เพื่อป้องกันการปลอมปนแพกเกจจากผู้ไม่ประสงค์ดีที่อาจเจาะ mirror เข้าไปได้ แต่ถ้าไม่ใช่ผู้ดูแล ก็จะไม่สามารถเซ็นกำกับไฟล์ Release ได้ และ apt ก็จะตรวจพบความผิดปกตินี้
บังเอิญว่า apt รุ่นใหม่ที่อัปเดตมา จะให้ public key ของ debian maintainer มาอยู่แล้ว ก็เลยตรวจลายเซ็นได้ทันที แต่พอขึ้นปีใหม่ ดูเหมือนลายเซ็นจะหมดอายุ ทีแรกก็ไม่กล้าอัปเกรด กลัวโดน trojan horse แต่ไปอ่านบทความ Using the GPG signature checking with apt 0.6 ที่ Debian Administration พบวิธีที่จะขอคีย์ใหม่มาได้แบบปลอดภัย ถึงได้กล้าอัปเกรด
เริ่มจากขอ public key โดยดูจากบรรทัดคำเตือน:
W: GPG error: ftp://ftp.debian.org unstable Release: The following signatures couldn't be verified because the public key is not avai lable: NO_PUBKEY 010908312D230C5F
แล้วดึงเอาตัวเลขฐานสิบหก 8 หลักท้ายหลังคำว่า NO_PUBKEY มาสั่งขอ public key:
# gpg --keyserver keyring.debian.org --recv 2D230C5F
จากนั้น เอามา import เข้า /etc/apt/trusted.gpg ด้วยคำสั่ง apt-key:
# gpg --armor --export 2D230C5F | apt-key add -
ขอบคุณข้อมูลละเอียดจาก Martin's Blog
สำหรับผู้ที่ทำ mirror ส่วนตัวด้วย apt-move ก็สามารถเซ็นไฟล์ Release ได้เช่นกัน โดยสร้าง PGP key pair ด้วย "gpg --gen-key" แล้วใส่ชื่อคีย์ใน /etc/apt-move.conf ที่บรรทัด "SIGNINGKEY=..." จากนั้น ถ้าได้ตรวจสอบแล้วว่าไฟล์แพกเกจที่ดาวน์โหลดมา มาจากแหล่งแพกเกจจริง (เช่น ผ่าน apt-get โดยไม่มีคำเตือนเรื่องการตรวจสอบความครบถ้วน) ก็สั่ง "apt-move {update|mirror}" ตามปกติ apt-move จะเซ็นไฟล์ Release ให้เมื่อทำเสร็จ จากนั้น ก็ส่ง PGP public key ของคุณในรูป ASCII armored ให้กับผู้ใช้ ให้ผู้ใช้ import เข้า apt ของเขาด้วยคำสั่ง apt-key:
# apt-key add {gpg-file}
จากนั้น เมื่อ apt-get update ก็จะไม่มีคำเตือนเรื่องลายเซ็นอีก
เรื่องเซ็น apt-move นี่ ทำมาระยะนึงกับทุก mirror ส่วนตัวละ ก็ใช้การได้ดี
1 ความเห็น:
ณ 9 กรกฎาคม 2551 เวลา 14:17 , Raynus แถลง…
Debian Sid เนีี่ย
ชอบมีปัญหา เรื่อง key เป็นระลอกๆเลย
- -
แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)
<< กลับหน้าแรก