【问题标题】:What is the point of maven's OpenPGP signatures if anyone can create and upload any keys?如果任何人都可以创建和上传任何密钥,那么 Maven 的 OpenPGP 签名有什么意义?
【发布时间】:2015-08-19 00:37:47
【问题描述】:

Sonatype 要求(非 SNAPSHOT 版本)工件进行 GPG 签名;应将公共 OpenPGP 密钥上传到 (MIT) 密钥服务器。

但是任何人都可以创建任何具有任何名称的 OpenPGP 密钥和电子邮件,并将它们上传到密钥服务器。 (据我所知;或者我错了吗?)没有将特定软件项目/库与特定公钥相关联的自动机制。当然,如果有人想检查工件的真实性,可以随时向软件作者索取公钥,或者密钥可能已经在某个地方发布(以将其与特定软件项目相关联的方式);但由于这不能自动完成,几乎没有人这样做。

因此,似乎整个 OpenPGP 签名过程,同样由于技术性和耗时性,更多地灌输了一种虚假的安全感,而不是实际上为普通用户提供了很多安全性。

难道不应该有一种自动/简化的方式将软件项目与 OpenPGP 密钥相关联,以使整个事情真正安全吗?

【问题讨论】:

  • 签署工件只是第一步。缺少的是 Maven 依赖项定义还包括有关如何验证依赖项的工件的信息。用于签署工件的散列或预期的 OpenPGP 密钥。另见stackoverflow.com/a/34795359/194894MNG-6026

标签: maven openpgp


【解决方案1】:

应用 OpenPGP 签名允许其他人通过信任网络验证作者身份。由于这确实一种相当复杂的方法,具有相当陡峭的学习曲线,因此默认情况下不会强制执行。

Sander Mak 写了一封 excellent introduction about verification of OpenPGP signatures in Maven.。遗憾的是,他没有展示更好的自动验证方式,而是使用商业软件作为 Maven Central 代理:

自动验证?

到现在为止,您一定在想“仅验证单个依赖项就需要做大量的工作”。你是绝对正确的。应用程序通常使用许多依赖项,手动检查它们很快就会变得乏味。在我看来,基于 Maven 的构建工具有很大的机会支持自动 PGP 签名验证。不过在此之前,您还可以使用 Sonatype 的 Nexus 存储库管理器作为 Maven Central 的代理。它可以自动检查 PGP 签名中的代理工件,并在签名检查失败时拒绝提供它们。不幸的是,这只能使用商业版本的 Nexus Pro,而不是开源版本。

我最近遇到了一个相当新的项目,Verify PGP signatures plugin (code on GitHub),它是一个 Maven 工件,用于验证其他工件的 OpenPGP 签名,并使您能够将允许签署给定工件的密钥列入白名单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-05
    • 2015-12-14
    • 2019-11-09
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    相关资源
    最近更新 更多