OpenSSL可以像GPG一样验证软件的完整性吗?

时间:2014-08-23 23:53:08

标签: shell openssl gnupg verify

下载并安装foo, 我们可能需要针对foo.asc进行验证, 一个“分离的签名”文件。 像

这样的脚本
curl -O http://example.com/foo
curl -O https://example.com/foo.asc
gpg --verify foo.asc foo

需要gpg,但openssl可以吗?

1 个答案:

答案 0 :(得分:3)

  

OpenSSL能否像GPG一样验证软件的完整性?

这取决于格式和编码。 OpenSSL可以处理多种格式和编码的消息和签名,包括PEM,DER,SMIME,PKCS7,PKCS12,在某些情况下还包括MSBLOB。

在您使用PGP签名的情况下,答案是否定的。 OpenSSL不知道如何解析签名块:

$ cat openssl-1.0.1i.tar.gz.asc 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAABAgAGBQJT4pu4AAoJENnE0m0OYESRle0H/A6fmNlUkhJ5NS5/W6HbztKE
j5xWzecv7HKElr01tleyGkefwg/whBhE1HN0QsFygOR29HFF4dhijjarYj7gh6tR
rsTGpbi+i0j2355a/BJdisXx9IESQLHeXxIAcGYEyWJKAUPzIHnIq/de+/IU9Luz
Ck5aNaB2epB8mAyqHD8tkyK52764ngATElsuz9/aSGBSgoNkLXa/3nDEink2ckaD
+fiBftKALEmJy+aaKp3E3PE3rQ02L0UK0hsO9DfOe0SZtFOd1nGF3Pb1DgGvum+R
RYUXuroGc6D126lK/ThhqZxBOWn+TYmm9g+P15r9nWOUvqvP1Bn2no0AvRvZH30=
=f6Uy
-----END PGP SIGNATURE-----

您可以在<openssl src>/crypto/pem/pem.h中找到OpenSSL支持的许多格式。 PGP 其中之一:

#define PEM_STRING_X509_OLD "X509 CERTIFICATE"
#define PEM_STRING_X509     "CERTIFICATE"
#define PEM_STRING_X509_PAIR    "CERTIFICATE PAIR"
#define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE"
#define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST"
#define PEM_STRING_X509_REQ "CERTIFICATE REQUEST"
...
#define PEM_STRING_PKCS7    "PKCS7"
#define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA"
...

Information Security Stack Exchange上的相关内容:openssl verify signature