2013-03-11 567 views
41

當我下載GCC時,它也有一個.sig文件,我認爲它提供了驗證下載的文件。 (我從here下載了GCC)。如何使用.sig文件驗證下載的文件?

但我不明白應該如何使用它。我試過gpg,但它抱怨公鑰。

[[email protected] 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 
[[email protected] src]# 

如何使用.sig文件驗證下載的文件?

回答

10

這個其他途徑對於驗證GNU項目(例如Octave)特別有用,因爲它們的簽名請求的密鑰可能在任何密鑰服務器中都找不到。

http://ftp.gnu.org/README

還有的.sig文件,其中包含分離的 GPG簽名上面的文件,由同一個腳本 產生他們自動登錄。

可以驗證簽名GNU項目文件從鑰匙圈 文件:

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

目錄與密鑰環文件,源文件,以驗證和 簽名文件,要使用的命令是:

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

+3

但是,如果我們談論安全那麼最好是使用HTTPS連接:[https://ftp.gnu.org/gnu/gnu-keyring.gpg] (https://ftp.gnu.org/gnu/gnu-keyring.gpg) – Maxim 2017-03-11 18:05:26

+0

@Maxim很好的電話! – tay10r 2017-03-11 23:39:02

0

您必須搜索給定密鑰ID的公用密鑰服務器:在您的案例中ID C3C45C06 將找到的密鑰導入您的本地密鑰庫中,此後驗證應該可以。 我使用Ubuntu 12.04,並附帶海馬密鑰管理軟件。主要進口之前,我看到的是:

~/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) <[email protected]>" 
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 
51

您需要導入公共密鑰:C3C45C06

可以分三個步驟來完成。

1)發現公共密鑰ID:

$ gpg gcc-4.7.2.tar.gz.sig 
gpg: Signature made Čt 20. září 2012, 12:30:44 CEST using DSA key ID C3C45C06 
gpg: Can't check signature: No public key 

2)從導入密鑰服務器的公鑰。通常不需要選擇密鑰服務器,但可以使用--keyserver <server>來完成。Keyserver examples.

$ gpg --recv-key C3C45C06 
gpg: requesting key C3C45C06 from hkp server keys.gnupg.net 
gpg: key C3C45C06: public key "Jakub Jelinek <[email protected]>" imported 
gpg: no ultimately trusted keys found 
gpg: Total number processed: 1 
gpg:    imported: 1 

3)驗證簽名:

$ gpg gcc-4.7.2.tar.gz.sig 
gpg: Signature made Čt 20. září 2012, 12:30:44 CEST using DSA key ID C3C45C06 
gpg: Good signature from "Jakub Jelinek <[email protected]>" [unknown] 
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: 33C2 35A3 4C46 AA3F FB29 3709 A328 C3A2 C3C4 5C06 

輸出應該說 「好標記」。


GPG:警告:此鍵與可信簽名認證!

是對另外一個問題;)

+4

偉大的一步一步的解釋! – 2015-06-30 17:55:40

+3

如果需要驗證的文件是gnupg(不在問題中),則可以在gnupg網站上使用SHA-1校驗和來驗證第一次gnupg下載。 – 2016-11-19 17:03:43

+0

在簽名驗證過程中,gpg將壓縮包文件及其對應的.sig文件作爲一個單元進行處理。如果tarball丟失或重命名,gpg提供了指定tarball名稱的機會。 – 2017-01-13 18:08:14