จะตรวจสอบไฟล์ที่ดาวน์โหลดด้วยไฟล์. sig ได้อย่างไร?


87

เมื่อฉันดาวน์โหลด GCC มันมี.sigไฟล์ด้วยและฉันคิดว่ามันมีไว้เพื่อยืนยันไฟล์ที่ดาวน์โหลด (ฉันดาวน์โหลด GCC จากที่นี่ )

แต่ฉันคิดไม่ออกว่าควรใช้อย่างไร ฉันพยายามgpgแต่มันบ่นเกี่ยวกับคีย์สาธารณะ

[root@localhost src]# gpg --verify gcc-4.7.2.tar.gz.sig gcc-4.7.2.tar.gz
gpg: Signature made Thu 20 Sep 2012 07:30:44 PM KST using DSA key ID C3C45C06
gpg: Can't check signature: No public key
[root@localhost src]# 

ฉันจะตรวจสอบไฟล์ที่ดาวน์โหลดด้วย.sigไฟล์ได้อย่างไร?

คำตอบ:


100

คุณต้องนำเข้าคีย์สาธารณะ: C3C45C06

สามารถทำได้ในสามขั้นตอน

  1. ค้นหารหัสคีย์สาธารณะ:

    $ gpg gcc-4.7.2.tar.gz.sig gpg: ทำลายเซ็นČt 20. září 2012, 12:30:44 CEST โดยใช้รหัสคีย์ DSA C3C45C06 gpg: ไม่สามารถตรวจสอบลายเซ็น: ไม่มีคีย์สาธารณะ

  2. นำเข้าคีย์สาธารณะจากเซิร์ฟเวอร์คีย์ โดยปกติไม่จำเป็นต้องเลือกเซิร์ฟเวอร์หลัก แต่สามารถทำได้ด้วย--keyserver <server>ไฟล์. ตัวอย่าง Keyserver

    $ gpg --recv-key C3C45C06 gpg: การขอคีย์ C3C45C06 จาก hkp server keys.gnupg.net gpg: คีย์ C3C45C06: คีย์สาธารณะ "Jakub Jelinek jakub@redhat.com" ที่นำเข้า gpg: ไม่พบคีย์ที่เชื่อถือได้ในที่สุด gpg: จำนวนทั้งหมดที่ประมวลผล : 1 gpg: นำเข้า: 1

หากข้อผิดพลาดของคำสั่งหมดเวลาใช้งานคุณอาจอยู่หลังไฟร์วอลล์ที่บล็อกพอร์ต gpg เริ่มต้น ลองใช้ตัวเลือก `` --keyserver 'กับพอร์ต 80 (ไฟร์วอลล์เกือบทั้งหมดอนุญาตให้ใช้พอร์ต 80 b / c ของการท่องเว็บ):

$ gpg --keyserver hkp://${HOSTNAME}:80 --recv-keys ${KEY_ID}
  1. ตรวจสอบลายเซ็น:

    $ gpg gcc-4.7.2.tar.gz.sig gpg: ทำลายเซ็นČt 20. září 2012, 12:30:44 CEST โดยใช้รหัสคีย์ DSA C3C45C06 gpg: ลายเซ็นที่ดีจาก "Jakub Jelinek jakub@redhat.com" [ไม่ทราบ ] gpg: คำเตือน: คีย์นี้ไม่ได้รับการรับรองด้วยลายเซ็นที่เชื่อถือได้! gpg: ไม่มีการระบุว่าลายเซ็นเป็นของเจ้าของ ลายนิ้วมือหลัก: 33C2 35A3 4C46 AA3F FB29 3709 A328 C3A2 C3C4 5C06

ผลลัพธ์ควรเป็น "ลายเซ็นที่ดี"


gpg: คำเตือน: คีย์นี้ไม่ได้รับการรับรองด้วยลายเซ็นที่เชื่อถือได้!

สำหรับคำถามอื่น;)


8
คำอธิบายทีละขั้นตอนที่ยอดเยี่ยม!
Matthew Kraus

4
ในกรณีที่ไฟล์ที่ต้องการการตรวจสอบเป็น gnupg (ไม่ใช่ในคำถาม) ผลรวมเช็ค SHA-1 จะอยู่ในไซต์ gnupg สำหรับการยืนยันไฟล์ที่ดาวน์โหลด gnupg ครั้งแรก
10 cls

ในระหว่างการตรวจสอบลายเซ็น gpg จะประมวลผลไฟล์ tarball และไฟล์. sig ที่เกี่ยวข้องเป็นหน่วย หาก tarball หายไปหรือเปลี่ยนชื่อ gpg จะให้โอกาสในการระบุชื่อ tarball
Andrew P.

ฉันได้รับคีย์ RSA และใช้งานไม่ได้โดยไม่มีหรือ--keyserverจากรายการนั้นมีเพียงอันเดียวเท่านั้นที่ได้รับ แต่ดูเหมือนว่าไม่น่าเชื่อถือมันแปลกเพราะฉันลองใช้GNU coreutilsซึ่งเป็นแพ็คเกจที่ใช้กันอย่างแพร่หลาย
user10089632

นอกจากนี้หาก gpg เตือนว่า "ไม่มีคำสั่งให้เดาว่าคุณหมายถึงอะไร" ให้ใช้gpg --verify gcc-4.7.2.tar.gz.sigแทน
xdavidliu

25

ช่องทางอื่นนี้มีประโยชน์อย่างยิ่งสำหรับการตรวจสอบโครงการ GNU (เช่นOctave ) เนื่องจากอาจไม่พบคีย์ที่ขอลายเซ็นในเซิร์ฟเวอร์หลักใด ๆ

จากhttp://ftp.gnu.org/README

นอกจากนี้ยังมีไฟล์. sig ซึ่งมีลายเซ็น GPG ที่แยกออกจากไฟล์ด้านบนซึ่งลงนามโดยอัตโนมัติโดยสคริปต์เดียวกันกับที่สร้างขึ้น

คุณสามารถตรวจสอบลายเซ็นสำหรับไฟล์โปรเจ็กต์ gnuด้วยไฟล์พวงกุญแจจาก:

https://ftp.gnu.org/gnu/gnu-keyring.gpg

ในไดเร็กทอรีที่มีไฟล์ keyring ซอร์สไฟล์ที่จะตรวจสอบและไฟล์ลายเซ็นคำสั่งที่ใช้คือ:

$ gpg --verify --keyring ./gnu-keyring.gpg foo.tar.xz.sig


3
แต่ถ้าเรากำลังพูดถึงความปลอดภัยควรใช้การเชื่อมต่อ HTTPS ดีกว่า: https://ftp.gnu.org/gnu/gnu-keyring.gpg
Maxim

4
ตลกดีฉันมาที่นี่อย่างชัดเจนเพื่อหาวิธีตรวจสอบ Octave! :)
Ron Jensen - เราทุกคนคือ Monica

ขอบคุณ. ฉันไม่พบคีย์ของผู้ดูแล Bash ในเซิร์ฟเวอร์คีย์ใด ๆ แต่นี่คือสิ่งที่ฉันต้องการในการตรวจสอบลายเซ็นสำหรับซอร์สโค้ด
Anthony Geoghegan

2
สำหรับ octave ดูคำตอบเกี่ยวกับแอพ gpg4win ที่นี่: superuser.com/questions/1268544/…
Martin

2

คุณต้องค้นหาเซิร์ฟเวอร์คีย์สาธารณะสำหรับรหัสคีย์ที่กำหนด: ในกรณีของคุณID C3C45C06 นำเข้าคีย์ที่พบในที่เก็บคีย์ในเครื่องของคุณและหลังจากนี้การตรวจสอบควรจะเรียบร้อย ฉันใช้ Ubuntu 12.04 และมาพร้อมกับซอฟต์แวร์การจัดการคีย์ Seahorse ก่อนการนำเข้าคีย์ฉันเห็นสิ่งนี้:

~/Downloads$ gpg --verify --keyring ./gnu-keyring.gpg icecat-31.5.0.en-US.linux-x86_64.tar.bz2.sig icecat-31.5.0.en-US.linux-x86_64.tar.bz2
gpg: Signature made  9.03.2015 (пн) 22,35,52 EET using RSA key ID D7E04784
gpg: Can't check signature: public key not found

หลังจากการนำเข้าคีย์ฉันเห็นสิ่งนี้:

~/Downloads$ gpg --verify --keyring ./gnu-keyring.gpg icecat-31.5.0.en-US.linux-x86_64.tar.bz2.sig icecat-31.5.0.en-US.linux-x86_64.tar.bz2
gpg: Signature made  9.03.2015 (пн) 22,35,52 EET using RSA key ID D7E04784
gpg: Good signature from "Ruben Rodriguez (GNU IceCat releases key) <ruben@gnu.org>"
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: A573 69A8 BABC 2542 B5A0  368C 3C76 EED7 D7E0 4784

เปิดคำถามเกี่ยวกับคำเตือนนี้ที่superuser.com/questions/1616531/…
questionto42

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