UNIX/Linux:PGP tar包文件签名密钥验证
如何在Linux/UNIX操作系统下针对下载的软件发行版(software.version.tar.gz)验证该签名(file.tar.gz.asc)文件?
对于所有基于theitroad的项目,应在使用它们之前下载PGP签名和MD5哈希并进行验证。
Linux和其他许多类似UNIX的操作系统可以使用GNU Privacy Guard。
但是,任何符合OpenPGP的程序都可以与软件一起成功使用。
以下说明假定您正在使用GNU Privacy Guard。
下载焦油球
例如,目的是您将下载Nginx Web服务器并使用PGP进行验证。
使用wget命令获取最新版本:
$ cd /tmp $ wget http://nginx.org/download/nginx-0.8.35.tar.gz $ wget http://nginx.org/download/nginx-0.8.35.tar.gz.asc
列出文件,执行:
$ ls -l
输出示例:
total 620 -rw-r--r-- 1 Hyman Hyman 622870 2010-04-01 21:14 nginx-0.8.35.tar.gz -rw-r--r-- 1 Hyman Hyman 196 2010-04-01 21:18 nginx-0.8.35.tar.gz.asc
检查签名
输入以下命令
$ gpg nginx-0.8.35.tar.gz.asc
输出示例:
gpg: Signature made Thursday 01 April 2010 09:18:53 PM IST using DSA key ID A524C53E gpg: Can't check signature: public key not found
但是,gpg无法检查签名,因为我们的本地Linux服务器或者工作站上没有作者的公钥A524C53E。
您需要从密钥服务器(例如pgpkeys.mit.edu)获取公共密钥,或者从作者网站下载公共密钥。
从密钥服务器获取公钥的命令
语法如下:
gpg --keyserver pgpkeys.mit.edu --recv-key <publicKey>
尝试获取公共密钥A524C53E,执行:
$ gpg --keyserver pgpkeys.mit.edu --recv-key A524C53E
现在,尝试再次验证软件签名:
$ gpg nginx-0.8.35.tar.gz.asc
从Web服务器获取公钥的命令
同样,使用wget命令从Web服务器获取公共密钥:
$ wget http://sysoev.ru/pgp.txt
从pgp.txt文件导入密钥,执行:
$ gpg --import pgp.txt
输出示例:
gpg: key A524C53E: public key "Igor Sysoev " imported gpg: Total number processed: 1 gpg: imported: 1
现在,尝试再次验证软件签名:
$ gpg nginx-0.8.35.tar.gz.asc
输出示例:
gpg: Signature made Thursday 01 April 2010 09:18:53 PM IST using DSA key ID A524C53E gpg: Good signature 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: 4C2C 85E7 05DC 7308 3399 0C38 A937 6139 A524 C53E ample outputs:
签名是好的,但是您不信任此密钥。
换句话说,文件没有被篡改。
但是,您需要另外验证密钥A524C53E是由真正的Igor Sysoev <[email protected]>创建的,而不是由其他人创建的。
我如何建立信任?
这一点并不复杂,因为您从未面对过Igor Sysoev。
为了保证密钥的真实性,您可以通过使用自己的私钥对其进行签名并将其邮寄回其所有者来实现。
这是建立信任关系的简单方法。
另一个快速的选择是使用以下命令:
gpg --edit-key {[email protected]} trust
输入以下命令
$ gpg --edit-key [email protected] trust
现在,尝试再次验证软件签名:
$ gpg nginx-0.8.35.tar.gz.asc
输出示例:
gpg: Signature made Thursday 01 April 2010 09:18:53 PM IST using DSA key ID A524C53E gpg: Good signature from "Ali "
由于您已进入信任网,因此您不应看到任何警告消息。