支招用Gnu隱私保護(hù)密鑰來(lái)簽署Linux RPM文件
RPM是在Red Hat和SUSE上安裝和管理軟件的標(biāo)準(zhǔn)。像Yum和Zypper這樣的元數(shù)據(jù)包處理軟件可以很容易地安裝軟件包。但是RPM可能有風(fēng)險(xiǎn),因?yàn)槠湓诎惭b過(guò)程中以root權(quán)限自動(dòng)執(zhí)行腳本。因此要確保你使用的RPM包值得信任。如果是你自己創(chuàng)建的RPM包,用Gnu隱私保護(hù)(GnuPG或GPG)密鑰來(lái)簽署它們是一個(gè)好主意。
GPG使用公共/私有密鑰對(duì)來(lái)確保機(jī)密性。你可以用它們來(lái)加密文件或作為確保郵件確實(shí)是由列表中的發(fā)送者發(fā)出的數(shù)字簽名。它們同樣可以用來(lái)簽署PRM軟件包。
當(dāng)簽署RPM軟件包時(shí),該RPM包的創(chuàng)建者需要通過(guò)簽約步驟。這個(gè)簽名可以用來(lái)核對(duì)GPG密鑰,這個(gè)密鑰應(yīng)該是公開的,安裝這個(gè)軟件包的用戶也應(yīng)該可以使用它。如果這個(gè)簽名匹配此公開的GPG密鑰,那么下載這個(gè)軟件包的用戶得到一個(gè)保證:這個(gè)軟件包是由同其捆綁在一起的GPG密鑰簽名過(guò)的。這個(gè)程序很方便,但是它不提供100%的保證。如果提供軟件包的源頭被黑客攻破,那么RPM軟件包和密鑰都可能是偽造的。簽名的軟件包確實(shí)增強(qiáng)了軟件包的安全性,因?yàn)楹诳托枰谔峁﹤卧彀皥?zhí)行兩個(gè)黑客程序。
如果你想提供簽署過(guò)的RPM包,你需要如下的應(yīng)用程序:
1.創(chuàng)建一個(gè)GPG密鑰對(duì)。
這將生成一個(gè)多用途的通用密鑰對(duì)。要?jiǎng)?chuàng)建它,使用GPG——gen-key命令并指定密鑰的屬性。在密鑰生成前,您還需要生成一些隨機(jī)數(shù)據(jù),所以一定要讓磁盤活躍來(lái)加快密鑰生成的過(guò)程。以下是GPG——gen-key命令的結(jié)果:
gpg: key 455F7CBF marked as ultimately trusted public and secret key created and signed. gpg: checking the trustdb gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u pub 1024R/455F7CBF 2011-04-07 Key fingerprint = 4C78 4A47 1B84 E769 4ADD C43D 31DA C76F 455F 7CBF uid Sander van Vugt sub 1024R/68D74CDD 2011-04-07
2.現(xiàn)在你有了密鑰對(duì),你需要密鑰的ID。使用密鑰ID,你需要?jiǎng)?chuàng)建一個(gè)密鑰文件。
密鑰ID是你在GPG的命令輸出行pub中看到的。在上面的例子中,密鑰的ID是455F7CBF。下面的命令將在當(dāng)前用戶的home目錄創(chuàng)建一個(gè)可以用來(lái)簽署鍵值的文件:
gpg -a -o ~/RPM-GPG-KEY-test --export 455F7CBF
3.接下來(lái),在同一用戶的主目錄,你必須創(chuàng)建一個(gè)具有以下內(nèi)容的.rpmmacros文件:
%_gpg_name 455F7CBF
4.在這一步,你可以(重新)簽署軟件包。
下面的命令用于簽署剛剛在RPM創(chuàng)建的目錄中創(chuàng)建的RPM包:
rpm --resign ~/rpmbuild/RPMS/x86_64/test-1.0-1.fc14.x86_64.rpm
5.在這一步驟,你有一個(gè)簽名的軟件包和一個(gè)用戶用于驗(yàn)證所用軟件包完整性的密鑰。
你需要發(fā)布簽名過(guò)的軟件包的密鑰。不過(guò),首先您需要對(duì)其進(jìn)行測(cè)試。下面的兩個(gè)命令實(shí)施了一個(gè)本地測(cè)試;第一個(gè)命令引入了GPG軟件包,下一個(gè)命令使用yum的本地安裝在不啟動(dòng)庫(kù)的情況下來(lái)安裝軟件包。
rpm --import ~/RPM-GPG-KEY-test yum localinstall ~/rpmbuild/RPMS/x86_64/test-1.0-1.fc14.x86_64.rpm
【編輯推薦】