【问题标题】:Can OpenSSL verify software integrity as GPG does?OpenSSL 可以像 GPG 那样验证软件完整性吗?
【发布时间】:2014-08-23 23:53:08
【问题描述】:

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

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

需要gpg,但openssl 可以吗?

【问题讨论】:

  • 不,因为 openssl 做 X.509,而 gpg 做 PGP,它们不一样。
  • [笑话] 所以你是从 HTTP(不是 HTTPS)下载签名文件?告诉我更多关于它的信息。
  • [lol] 在示例中已修复。

标签: shell openssl gnupg verify


【解决方案1】:

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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-19
    • 2020-05-12
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 2021-09-09
    • 1970-01-01
    相关资源
    最近更新 更多