Theppitak's blog

My personal blog.

05 มกราคม 2549

เรื่องวุ่นๆ ของ 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 ความเห็น:

แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)

<< กลับหน้าแรก

hacker emblem