Sonatype要求(非SNAPSHOT版本)工件进行GPG签名;应将公共OpenPGP密钥上传到(MIT)密钥服务器。
但任何人都可以使用任何名称创建任何OpenPGP密钥并将其上传到密钥服务器。有(据我所知;或者我错了?)没有自动机制将特定的软件项目/库与特定的公钥相关联。当然,如果有人想要检查工件的真实性,可以随时向软件作者请求公钥,或者密钥已经在某处发布(以某种方式将其与特定软件项目相关联);但由于这不能自动完成,几乎没有人会这样做。
因此,整个OpenPGP签名程序似乎也非常技术性和耗时,更多的是灌输虚假的安全感,而不是为普通用户提供更多的安全性。
那么不应该有一种自动/简化的方法将软件项目与OpenPGP密钥相关联,以使整个事情真正安全吗?
答案 0 :(得分:2)
应用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签名,并允许您将允许签名的工具列入白名单。