天天看點

RPM-GPG-KEY詳解

      今天用yum安裝軟體,遇到了Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL問題,為了加深印象,特别搜尋了RPM-GPG-KEY到底是作什麼的,發現了這篇文章,放在這裡,友善以後想不起來時檢視。

原文位址:http://linux.chinaunix.net/techdoc/system/2007/09/26/968723.shtml

原文如下:

GPG在Linux上的應用主要是實作官方釋出的包的簽名機制。

GPG分為公鑰及私鑰。

公鑰:顧名思意,即可共享的密鑰,主要用于驗證私鑰加密的資料及簽名要發送給私鑰方的資料。

私鑰:由本地保留的密鑰,用于簽名本地資料及驗證用公鑰簽名的資料。

實作原理(以Red Hat簽名為例):

1>RH在釋出其官方的RPM包時(如本地RHELCD光牒及FTP空間包),會提供一個GPG密鑰檔案,即所謂的公鑰。

2>使用者下載下傳安裝這個RPM包時,引入RH官方的這個RPM GPG公鑰,用來驗證RPM包是不是RH官方簽名的。

導入GPG-KEY:

可以去https://www.redhat.com/security/team/key/或/etc/pki/rpm-gpg查找相應的GPG密鑰,并導入到RPM:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY

簽名及加密概念:

簽名與加密不是一個概念。

簽名類似于校驗碼,用于識别軟體包是不是被修改過,最常用的的就是我們的GPG及MD5簽名,原方使用一定的字元(MD5)或密碼(GPG私鑰)與軟體進行相應的運算并得到一個定長的密鑰,。

加密是用一定的密鑰對原資料進行修改,即使程式在傳輸中被截獲,隻要它不能解開密碼,就不能對程式進行修改,除非破壞掉檔案,那樣我們就知道軟體被修改過了。

RPM驗證方法:

1>驗證安裝的整個軟體包的檔案

rpm -V crontabs-1.10-8

2>驗證軟體包中的單個檔案

rpm -Vf /etc/crontab

如果檔案沒有被修改過,則不輸出任何資訊。

3>驗證整個軟體包是否被修改過

rpm -Vp AdobeReader_chs-7.0.9-1.i386.rpm

.......T   /usr/local/Adobe/Acrobat7.0/Reader/GlobalPrefs/reader_prefs

S.5....T   /usr/local/Adobe/Acrobat7.0/bin/acroread

4>驗證簽名

rpm -K AdobeReader_chs-7.0.9-1.i386.rpm

AdobeReader_chs-7.0.9-1.i386.rpm: sha1 md5 OK

驗證結果含意:

S :file Size differs

M :Mode differs (includes permissions and file type)

5 :MD5 sum differs

D :Device major/minor number mis-match

L :readLink(2) path mis-match

U :User ownership differs

G :Group ownership differs

T :mTime differs

繼續閱讀