支招用Gnu隱私保護(hù)密鑰來簽署Linux RPM文件
RPM是在Red Hat和SUSE上安裝和管理軟件的標(biāo)準(zhǔn)。像Yum和Zypper這樣的元數(shù)據(jù)包處理軟件可以很容易地安裝軟件包。但是RPM可能有風(fēng)險,因為其在安裝過程中以root權(quán)限自動執(zhí)行腳本。因此要確保你使用的RPM包值得信任。如果是你自己創(chuàng)建的RPM包,用Gnu隱私保護(hù)(GnuPG或GPG)密鑰來簽署它們是一個好主意。
GPG使用公共/私有密鑰對來確保機(jī)密性。你可以用它們來加密文件或作為確保郵件確實是由列表中的發(fā)送者發(fā)出的數(shù)字簽名。它們同樣可以用來簽署PRM軟件包。
當(dāng)簽署RPM軟件包時,該RPM包的創(chuàng)建者需要通過簽約步驟。這個簽名可以用來核對GPG密鑰,這個密鑰應(yīng)該是公開的,安裝這個軟件包的用戶也應(yīng)該可以使用它。如果這個簽名匹配此公開的GPG密鑰,那么下載這個軟件包的用戶得到一個保證:這個軟件包是由同其捆綁在一起的GPG密鑰簽名過的。這個程序很方便,但是它不提供100%的保證。如果提供軟件包的源頭被黑客攻破,那么RPM軟件包和密鑰都可能是偽造的。簽名的軟件包確實增強(qiáng)了軟件包的安全性,因為黑客需要在提供偽造包之前執(zhí)行兩個黑客程序。
如果你想提供簽署過的RPM包,你需要如下的應(yīng)用程序:
1.創(chuàng)建一個GPG密鑰對。
這將生成一個多用途的通用密鑰對。要創(chuàng)建它,使用GPG——gen-key命令并指定密鑰的屬性。在密鑰生成前,您還需要生成一些隨機(jī)數(shù)據(jù),所以一定要讓磁盤活躍來加快密鑰生成的過程。以下是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)在你有了密鑰對,你需要密鑰的ID。使用密鑰ID,你需要創(chuàng)建一個密鑰文件。
密鑰ID是你在GPG的命令輸出行pub中看到的。在上面的例子中,密鑰的ID是455F7CBF。下面的命令將在當(dāng)前用戶的home目錄創(chuàng)建一個可以用來簽署鍵值的文件:
gpg -a -o ~/RPM-GPG-KEY-test --export 455F7CBF
3.接下來,在同一用戶的主目錄,你必須創(chuàng)建一個具有以下內(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.在這一步驟,你有一個簽名的軟件包和一個用戶用于驗證所用軟件包完整性的密鑰。
你需要發(fā)布簽名過的軟件包的密鑰。不過,首先您需要對其進(jìn)行測試。下面的兩個命令實施了一個本地測試;第一個命令引入了GPG軟件包,下一個命令使用yum的本地安裝在不啟動庫的情況下來安裝軟件包。
rpm --import ~/RPM-GPG-KEY-test yum localinstall ~/rpmbuild/RPMS/x86_64/test-1.0-1.fc14.x86_64.rpm
【編輯推薦】