หาก APT รายงานว่า “ไม่สามารถตรวจสอบลายเซ็นต่อไปนี้ได้” ให้ระบุที่เก็บและรหัสข้อผิดพลาดเฉพาะในผลลัพธ์เดียวกัน จากนั้นซ่อมแซมคีย์การลงนามที่เชื่อถือได้หรือรายการแหล่งที่มาของที่เก็บนั้น สำหรับที่เก็บของบุคคลที่สาม ให้ขอรับคีย์ปัจจุบันจากผู้เผยแพร่ซอฟต์แวร์และผูกคีย์นั้นกับแหล่งที่มานั้นด้วยคำSigned-Byสั่ง `application/ ...
ตัวอย่างผลลัพธ์จากคำสั่ง apt update: ข้อผิดพลาด missing-key จะระบุชื่อของ repository ที่ได้รับผลกระทบ และมีตัวระบุ NO_PUBKEY รวมอยู่ด้วย
1. ค้นหาที่เก็บข้อมูลและอ่านข้อผิดพลาดอย่างละเอียด
เรียกใช้การอัปเดตเพื่อให้คุณสามารถตรวจสอบข้อความทั้งหมดได้:
sudo apt update
มองหา URL ที่อยู่ข้างๆErr:และโทเค็น เช่นNO_PUBKEY, EXPKEYSIG, KEYEXPIRED, หรือBADSIGURL จะบอกคุณว่าแหล่งที่มาใดล้มเหลว ส่วนโทเค็นจะช่วยระบุสาเหตุให้แคบลง APT จะตรวจสอบเมตาเดตาของที่เก็บข้อมูลที่ลงนามแล้วก่อนที่จะเชื่อถือดัชนีแพ็กเกจ ดังนั้นการตรวจสอบลายเซ็นที่ล้มเหลวจึงเป็นสัญญาณด้านความปลอดภัยมากกว่าคำเตือนทั่วไป การติดตั้ง Ubuntu จะมีคีย์สำหรับที่เก็บข้อมูล Ubuntu เริ่มต้นอยู่แล้ว การตั้งค่าคีย์ด้วยตนเองมักจะจำเป็นเฉพาะสำหรับที่เก็บข้อมูลที่เพิ่มเข้ามาในภายหลังเท่านั้น
ค้นหาคำจำกัดความของแหล่งที่มาโดยการค้นหาชื่อโฮสต์ที่ปรากฏในข้อผิดพลาด แทนที่โฮสต์ตัวอย่างด้วยโฮสต์จากเทอร์มินัลของคุณ:
ค้นหาในไดเร็กทอรีแหล่งที่มาของ APT เพื่อหาโฮสต์ที่ตรงกับที่รายงานโดยการอัปเดตที่ล้มเหลว
grep -R "packages.example.org" /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null
Ubuntu 24.04 และเวอร์ชันที่ใหม่กว่าใช้ไฟล์ซอร์สโค้ด deb822 ที่ลงท้าย.sourcesด้วย .deb822 เป็นค่าเริ่มต้น การติดตั้งเวอร์ชันเก่ามักจะมี.listไฟล์แบบบรรทัดเดียว ตรวจสอบ URL ของที่เก็บซอฟต์แวร์ ชุดซอฟต์แวร์ หรือชื่อรหัสของ Ubuntu และSigned-Byรายการที่มีอยู่ หากซอร์สโค้ดชี้ไปยังเวอร์ชันที่ผู้จำหน่ายไม่ให้การสนับสนุนอีกต่อไป ให้ใช้คำแนะนำของผู้จำหน่ายสำหรับเวอร์ชัน Ubuntu ของคุณ หรือปิดใช้งานซอร์สโค้ดนั้น คีย์ไม่สามารถแก้ไขเส้นทางที่เก็บซอฟต์แวร์ที่ล้าสมัยหรือไม่ถูกต้องได้
2. ซ่อมแซมกุญแจสำรองที่หายไปหรือบิดเบี้ยว
ก่อนNO_PUBKEYอื่น ให้ตรวจสอบว่าที่เก็บข้อมูลนั้นเป็นที่ที่คุณติดตั้งโดยตั้งใจหรือไม่ เปิดเอกสารการติดตั้งปัจจุบันของผู้เผยแพร่ และรับ URL ของคีย์ลงนามและลายนิ้วมือแบบเต็มจากแหล่งข้อมูลนั้น เปรียบเทียบลายนิ้วมือกับเอกสารอ้างอิงของผู้จำหน่ายที่เผยแพร่แยกต่างหาก หากมี อย่าดึงคีย์จากเซิร์ฟเวอร์คีย์แบบสุ่มเพียงเพราะรหัสย่อตรงกับข้อผิดพลาด
สำหรับผู้จำหน่ายที่เผยแพร่คีย์ที่เข้ารหัสแบบ ASCII .ascให้ติดตั้งคีย์นั้นเป็นคีย์ริง APT เฉพาะ แทนที่ URL ตัวอย่างด้วย URL ที่ถูกต้องซึ่งระบุไว้โดยผู้จำหน่ายนั้น:
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://vendor.example/path/repo-signing-key.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/vendor-archive.gpg
sudo chmod 0644 /etc/apt/keyrings/vendor-archive.gpg
ไฟล์.gpgต้องสามารถอ่านได้โดยผู้ใช้ดาวน์โหลดที่ไม่ได้รับสิทธิ์พิเศษของ APT หากผู้เผยแพร่จัดเตรียม.gpgคีย์ริงแบบไบนารี ให้ปฏิบัติตามคำแนะนำแทนการลบคีย์ริงออกอีกครั้ง Ubuntu แนะนำให้เก็บคีย์ของบุคคลที่สามไว้ในคีย์ริงแยกต่างหากและอ้างอิงโดยที่เก็บนั้น เพื่อจำกัดแหล่งที่มาที่สามารถใช้คีย์ได้
การตั้งค่า Signed-By เฉพาะแหล่งที่มาจะช่วยให้ที่เก็บข้อมูลเชื่อมโยงกับคีย์ริงของตนเอง
แก้ไขคำจำกัดความแหล่งที่มาที่มีอยู่แล้วแทนที่จะเพิ่มรายการซ้ำ สำหรับไฟล์ deb822 เช่น/etc/apt/sources.list.d/vendor.sourcesให้ใช้ค่า URI, ชุดซอฟต์แวร์ และส่วนประกอบจริงของผู้จำหน่าย จากนั้นเพิ่มเส้นทางคีย์ริง:
Types: deb
URIs: https://packages.example.org/ubuntu
Suites: YOUR_UBUNTU_CODENAME
Components: main
Signed-By: /etc/apt/keyrings/vendor-archive.gpg
หากรายการที่มีอยู่เป็น.listไฟล์บรรทัดเดียว ไวยากรณ์ที่เทียบเท่าคือdeb [signed-by=/etc/apt/keyrings/vendor-archive.gpg] https://packages.example.org/ubuntu YOUR_UBUNTU_CODENAME main. รักษาชุดและส่วนประกอบที่ได้รับการบันทึกไว้ของที่เก็บข้อมูลไว้ ค่าตัวอย่างเป็นเพียงตัวแทน หลีกเลี่ยงการใช้apt-key add: เนื่องจากเลิกใช้แล้ว และคีย์ที่เชื่อถือได้ทั่วโลกอาจให้สิทธิ์แก่คีย์ของบุคคลที่สามมากกว่าที่ตั้งใจไว้
หากข้อความระบุว่าEXPKEYSIGหรือKEYEXPIREDแสดงว่าคีย์ลงนามอาจหมดอายุแล้ว หรือผู้จำหน่ายอาจเปลี่ยนคีย์ใหม่แล้ว ดาวน์โหลดและตรวจสอบคีย์ทดแทนโดยใช้คำแนะนำปัจจุบันของผู้จำหน่าย จากนั้นอัปเดตคีย์ริงของแหล่งที่มา อย่าต่ออายุความน่าเชื่อถือของคีย์เก่าโดยไม่สนใจวันหมดอายุ
3. ตรวจสอบนาฬิกา, คลังเก็บข้อมูล Ubuntu และปัญหาเกี่ยวกับมิเรอร์
หากแหล่งเก็บข้อมูลเป็นแหล่งเก็บข้อมูลอย่างเป็นทางการของ Ubuntu ห้ามนำเข้าคีย์จากแหล่งเก็บข้อมูลภายนอก ตรวจสอบว่านาฬิการะบบของคุณถูกต้องด้วยคำสั่ง `npm run src` timedatectl statusและยืนยันว่าแหล่งที่มาใช้ URL ของแหล่งเก็บข้อมูล Ubuntu ที่ถูกต้องและชื่อรหัสสำหรับเวอร์ชันที่คุณติดตั้ง แพ็กubuntu-keyringเกจนี้มีคีย์ลงนามของแหล่งเก็บข้อมูล Ubuntu หากการจัดการแพ็กเกจยังคงใช้งานได้ผ่านแหล่งที่มาของ Ubuntu ที่เชื่อถือได้ ให้รีเฟรชแพ็กเกจนั้นด้วยคำสั่ง `npm run src`:
sudo apt install --reinstall ubuntu-keyring
ข้อความBADSIGดังกล่าวหมายความว่าลายเซ็นไม่ตรงกับเมตาเดต้าที่ APT ได้รับ การนำเข้าคีย์ซ้ำมักไม่ใช่วิธีแก้ปัญหาที่ถูกต้อง ตรวจสอบนาฬิการะบบที่ไม่ถูกต้อง มิเรอร์ที่ล้าสมัยหรือไม่สอดคล้องกัน พร็อกซีแคช หรือปัญหาการเผยแพร่ฝั่งที่เก็บข้อมูล ลองใหม่อีกครั้งหลังจากแก้ไขสาเหตุแล้ว หากมีเพียงแหล่งข้อมูลภายนอกเท่านั้นที่ล้มเหลวและคุณไม่ต้องการใช้งาน ให้ปิดใช้งานส่วนเฉพาะ.sourcesหรือ.listรายการนั้นในขณะที่คุณติดต่อผู้ดูแลระบบ เปิดใช้งานการตรวจสอบความปลอดภัยไว้เสมอ
4. ตรวจสอบการแก้ไข
หลังจากแก้ไขแหล่งที่มาหรือคีย์ริงแล้ว ให้เรียกใช้คำสั่ง apt update อีกครั้ง และตรวจสอบว่าไม่มีข้อผิดพลาดเกี่ยวกับลายเซ็นเหลืออยู่
เรียกใช้งานsudo apt updateอีกครั้ง การซ่อมแซมจะเสร็จสมบูรณ์เมื่อดึงข้อมูลจากแหล่งเก็บข้อมูลที่ได้รับผลกระทบโดยไม่มีคำเตือนเกี่ยวกับลายเซ็น และ APT ทำงานถึงระดับที่Reading package lists... Doneกำหนด การอัปเดตที่สำเร็จไม่ได้หมายความว่าผู้เผยแพร่บุคคลที่สามนั้นปลอดภัย แต่เป็นการยืนยันว่าลายเซ็นเมตาเดตาตรงกับคีย์ที่คุณเลือกที่จะเชื่อถือ หากการตรวจสอบยังคงล้มเหลว ให้ตรวจสอบ URL ของแหล่งเก็บข้อมูล ชื่อรหัส ลายนิ้วมือของคีย์ สิทธิ์การเข้าถึงคีย์ริง และโทเค็นข้อผิดพลาดที่แน่นอนอีกครั้งก่อนทำการเปลี่ยนแปลงอื่น
สำหรับรูปแบบซอร์สโค้ดและคีย์ที่รองรับ โปรดดูคำแนะนำเกี่ยวกับที่เก็บซอฟต์แวร์ของบุคคลที่สามของ Ubuntuคู่มือ apt - secure ของ Ubuntuและเอกสารเกี่ยวกับความสมบูรณ์ของไฟล์เก็บถาวรของ Ubuntu