下载并安装foo
,
我们可能需要针对foo.asc
进行验证,
一个“分离的签名”文件。
像
curl -O http://example.com/foo
curl -O https://example.com/foo.asc
gpg --verify foo.asc foo
需要gpg
,但openssl
可以吗?
答案 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。