สองวันที่ผ่านมา ผู้ใช้ 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 ส่วนตัวละ ก็ใช้การได้ดี