Sonatype 要求(非 SNAPSHOT 版本)工件是 GPG 签名的;公共 OpenPGP 密钥应上传到 (MIT) 密钥服务器。
但是任何人都可以通过电子邮件创建任何名称的任何 OpenPGP 密钥并将它们上传到密钥服务器。没有(据我所知;还是我错了?)没有自动机制来将特定的软件项目/库与特定的公钥相关联。当然,如果有人想检查工件的真实性,可以随时向软件作者索取公钥,或者密钥可能已经在某处发布(以将其与特定软件项目相关联的方式);但由于这不能自动完成,几乎没有人会这样做。
因此,整个 OpenPGP 签名过程似乎也非常技术性和耗时,与其说实际上为普通用户提供了很多安全性,不如说是灌输一种虚假的安全感。
那么,难道不应该有一种自动/简化的方式将软件项目与 OpenPGP 密钥相关联,以使整个事情真正安全吗?
应用 OpenPGP 签名允许其他人通过信任网络验证作者身份。由于这确实是一种相当复杂的方法,具有相当陡峭的学习曲线,因此默认情况下不强制执行。
Sander Mak 写了一篇关于 Maven 中 OpenPGP 签名验证的精彩介绍。。遗憾的是,他没有展示更好的执行自动验证的方法,而是使用商业软件作为 Maven Central 代理:
自动验证?
现在,您一定在想“仅仅为了验证单个依赖项就需要做大量的工作”。你是完全正确的。应用程序通常使用许多依赖项,手动检查它们很快就会变得乏味。在我看来,基于 Maven 的构建工具有很大的机会支持自动 PGP 签名验证。但在此之前,您还可以使用 Sonatype 的 Nexus 存储库管理器作为 Maven Central 的代理。它可以自动检查代理工件的 PGP 签名,并在签名检查失败时拒绝为其提供服务。不幸的是,这只能使用商业版本的 Nexus Pro,而不能使用开源版本。
我最近遇到了一个相当新的项目,验证 PGP 签名插件(代码位于 GitHub 上),它是一个 Maven 工件,用于验证其他工件的 OpenPGP 签名,并使您能够将允许签署给定工件的密钥列入白名单。
归档时间: |
|
查看次数: |
661 次 |
最近记录: |