จะดาวน์โหลดและตรวจสอบ gpg อย่างปลอดภัยได้อย่างไรว่าเป็นแพ็คเกจของเดเบียน


13

ฉันต้องการแพ็คเกจ (แหล่งที่มาหรือไบนารี) เฉพาะจาก Debian

ฉันสามารถดาวน์โหลดแพ็คเกจโดยใช้ apt-get ได้หรือไม่?

ฉันจะเพิ่มพื้นที่เก็บข้อมูล Debian ลงในรายการแหล่งที่มาของฉันได้อย่างไรเพื่อให้สามารถใช้งานบนฐานรายกรณีเท่านั้น ไม่ทำให้ระบบของฉันยุ่งเหยิงโดยใช้ที่เก็บ Debian ทั้งหมดหรือไม่

ฉันจะรับคีย์ gpg สำหรับพื้นที่เก็บข้อมูล Debian เพื่อให้แน่ใจว่าแพคเกจได้รับการลงนามโดยเก็บถาวร Debian ได้อย่างไร

(โปรดอย่าบอกฉันว่าระบบอาจเสียหายฉันทราบและไม่สนใจน้อยลงเพราะฉันสามารถกู้คืนสแน็ปช็อต VM ได้อย่างง่ายดาย)


ส่วนหนึ่งของการแก้ปัญหาอาจเป็นแพ็คเกจ debian-archive-keyring ซึ่งรวมถึง /usr/share/keyrings/debian-archive-keyring.gpg
James Mitch

อีกส่วนหนึ่งของการแก้ปัญหาอาจจะเป็น Apt- Pinning
James Mitch

คำตอบนี้ช่วยได้ไหม? askubuntu.com/questions/263705/…
andol

คำตอบ:


14

มีคำถามหลายข้อที่ฉันจะตอบเป็นรายบุคคล:

จะดาวน์โหลด (และไม่ติดตั้ง) แพ็คเกจไบนารีแต่ละรายการได้อย่างไร

apt-get มีตัวเลือกให้ดาวน์โหลดแพ็คเกจเท่านั้น:

-d  Download only - do NOT install or unpack archives

คุณจะพบแพ็คเกจที่ดาวน์โหลด/var/cache/apt/archives/มา ในกรณีนี้คุณจะต้องเพิ่มการกำหนดค่ารายการแหล่งที่มาใหม่เพื่อฉลาด

จะดาวน์โหลดแพ็คเกจของแต่ละแหล่งได้อย่างไร

apt-get source <package>

หรือเมื่อคุณทราบตำแหน่งของไฟล์. dsc:

dget http://http.debian.net/debian/pool/main/k/knot/knot_1.2.0~rc3-1.dsc

ทั้งสองวิธีทำการตรวจสอบลายเซ็นบนไฟล์

วิธีการตรึงซอร์สโค้ดหรือที่รู้จักฉันจะไม่ยุ่งในการติดตั้งได้อย่างไร

คุณได้ชี้ไปที่หน้าของคำอธิบายพื้นฐานสำหรับAPT Pinningแล้วและฉันจะเพิ่มเฉพาะที่คุณอาจต้องการอ่านmanpage apt_preferencesซึ่งมีตัวอย่างที่ดีเพื่อให้บรรลุสิ่งที่คุณต้องการ ดูหัวข้อ 'การติดตามเสถียรภาพ' ในตัวอย่างโดยเฉพาะเนื่องจากอธิบายบางสิ่งที่ใกล้เคียงกับความต้องการของคุณมาก:

มีคำสั่งที่เป็นประโยชน์เมื่อเล่นกับหลายแหล่งและการตรึง APT:

# apt-cache policy knot
knot:
  Installed: 1.1.3-1~bpo60+1
  Candidate: 1.2.0~rc3-1~bpo60+1
  Version table:
     1.2.0~rc3-1~bpo60+1 0
        500 http://deb.knot-dns.cz/debian/ squeeze/main amd64 Packages
 *** 1.1.3-1~bpo60+1 0
        100 /var/lib/dpkg/status
     1.0.5-1~bpo60+1 0
        500 http://ppa.sury.org/debian/ squeeze/main amd64 Packages

นี้แสดงให้เห็นว่ารุ่นที่ติดตั้งเป็น 1.1.3-1 ~ bpo60 + 1, และผู้สมัครเป็น 1.2.0 ~ ~ rc3-1 bpo60 + 1 apt-get upgradeซึ่งจะได้รับการติดตั้งต่อไป นอกจากนี้ยังมีบางรุ่นที่เก่ากว่าจากที่เก็บอื่น

จะดาวน์โหลดรหัสเก็บถาวร Debian ได้อย่างไร

Debian สำคัญเก็บมีการเผยแพร่บนFTP ต้นแบบ คุณจะต้องนำเข้ากุญแจไปยังพวงกุญแจ gpg ของคุณ:

$ gpg --import archive-key-6.0.asc 
gpg: key 473041FA: public key "Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   9  signed:  31  trust: 0-, 0q, 0n, 0m, 0f, 9u
gpg: depth: 1  valid:  31  signed:  38  trust: 25-, 0q, 0n, 1m, 5f, 0u
gpg: depth: 2  valid:  21  signed:  31  trust: 19-, 0q, 0n, 0m, 2f, 0u
gpg: depth: 3  valid:   3  signed:  12  trust: 2-, 0q, 0n, 0m, 1f, 0u
gpg: depth: 4  valid:   1  signed:   8  trust: 1-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2013-09-22

จากนั้นคุณจะต้องตรวจสอบลายเซ็น:

$ gpg --list-sig 473041FA
pub   4096R/473041FA 2010-08-27 [expires: 2018-03-05]
uid                  Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>
sig 3        473041FA 2010-08-27  Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>
sig          7E7B8AC9 2010-08-27  Joerg Jaspert <joerg@debian.org>
sig     P    B12525C4 2010-08-27  [User ID not found]
sig          D0EC0723 2010-08-27  [User ID not found]
sig          8AEA8FEE 2010-08-27  [User ID not found]
sig          A3AE44A4 2010-08-28  [User ID not found]
sig          00D8CD16 2010-08-28  Alexander Reichle-Schmehl <alexander@reichle.schmehl.info>
sig          CD15A883 2010-08-28  [User ID not found]
sig          672C8B12 2010-08-28  [User ID not found]
sig 2        C4CF8EC3 2010-08-28  [User ID not found]
sig 2        D628A5CA 2010-08-28  [User ID not found]

และติดตามแต่ละคีย์ GPG ให้กับนักพัฒนา Debian ด้วยการติดตามด้วยตนเองหรือตรวจสอบ fe ที่โครงการสถิติคีย์ PGP และหากไม่มีสายโซ่จากคีย์ PGP / GPG ของคุณไปยังที่เก็บคีย์ Debian คุณจะต้องสร้างความเชื่อมั่นในช่วงเวลาหนึ่ง

วิธีดาวน์โหลดและตรวจสอบแต่ละแพ็คเกจด้วยมือ

ดังนั้นวิธีการอื่นจึงมีความซับซ้อนมากขึ้นเนื่องจากแพ็คเกจ deb ไม่ได้ลงนามแยกกัน แต่เฉพาะReleaseไฟล์เท่านั้นที่ถูกเซ็นชื่อ ดังนั้นคุณจะต้องดาวน์โหลดและตรวจสอบลายเซ็นบนReleaseและPackagesไฟล์พร้อมกับแพ็คเกจแต่ละชุด

ฉันจะเพิ่มตัวอย่างที่ชัดเจนยิ่งขึ้น

ลองนึกภาพคุณต้องการดาวน์โหลดแพ็คเกจ Debian สำหรับKnot DNSจากเป็น PPA อย่างเป็นทางการสำหรับ Ubuntu ที่แม่นยำในสถาปัตยกรรม amd64

คุณจะต้องคลิกผ่านไดเรกทอรีและค้นหาไฟล์เหล่านี้:

wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/dists/precise/Release
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/dists/precise/Release.gpg
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/dists/precise/main/binary-amd64/Packages
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/pool/main/k/knot/knot_1.2.0~rc3-1~precise+1_amd64.deb

ขั้นตอนต่อไปคือการตรวจสอบลายเซ็นในReleaseไฟล์:

$ gpg --verify Release.gpg Release
gpg: Signature made Fri 01 Mar 2013 07:14:38 PM CET using RSA key ID F9C59A45
gpg: Good signature from "Launchpad Datové schránky"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 5246 3488 670E 69A0 9200  7C24 F233 1238 F9C5 9A45

แน่นอนคุณจะต้องตรวจสอบคีย์ในวิธีอื่น (เช่นคีย์ผู้ดูแลระบบ Debian / Ubuntu, ตรวจสอบจาก launchpad ฯลฯ ฯลฯ )

เมื่อคุณตรวจสอบลายเซ็นที่ถูกต้องในReleaseไฟล์แล้วคุณสามารถไปที่ขั้นตอนต่อไป - ตรวจสอบไฟล์แพคเกจ

sha256sum Packages
c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad  Packages
$ grep c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad Release
 c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad             3379 main/binary-amd64/Packages

อย่างที่คุณเห็นลายเซ็นสามารถพบได้ในReleaseไฟล์ที่เซ็นชื่อดังนั้นเราจึงตรวจสอบความถูกต้องของPackagesไฟล์โดยการคำนวณและเปรียบเทียบลายนิ้วมือ SHA-256

ขั้นตอนสุดท้ายคล้ายกัน คุณต้องคำนวณและเปรียบเทียบลายนิ้วมือของแต่ละแพ็คเกจ:

$ sha1sum knot_1.2.0~rc3-1~precise+1_amd64.deb 
8b34078e9bfef7aa818b2f926a28838b0ede9f43  knot_1.2.0~rc3-1~precise+1_amd64.deb
$ grep -A 13 "Package: knot$" Packages | grep "^SHA1: "
SHA1: 8b34078e9bfef7aa818b2f926a28838b0ede9f43

ณ จุดนี้เราได้ผูกมัดแพคเกจอย่างปลอดภัยไปยังReleaseไฟล์ที่ลงนาม ดังนั้นหากคุณเชื่อว่าลายเซ็นในReleaseไฟล์นั้นคุณสามารถมั่นใจได้ว่าแพคเกจนั้นถูกดาวน์โหลดเหมือนเดิม

คุณสามารถอ่านเพิ่มเติมในบทความSecure APTที่ Debian Wiki


คุณช่วยอธิบายได้ไหมว่าทำไมgpgคำสั่งไม่ต้องการสิทธิ์พิเศษรูท มันควรจะเป็นเครื่องมือการบริหาร
Sopalajo de Arrierez

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