Sonatype要求(非SNAPSHOT版本)工件进行GPG签名;应将公共OpenPGP密钥上传到(MIT)密钥服务器.
但任何人都可以使用任何名称创建任何OpenPGP密钥并将其上传到密钥服务器.有(据我所知;或者我错了?)没有自动机制将特定的软件项目/库与特定的公钥相关联.当然,如果有人想要检查工件的真实性,可以随时向软件作者请求公钥,或者密钥已经在某处发布(以某种方式将其与特定软件项目相关联);但由于这不能自动完成,几乎没有人做过.
因此,整个OpenPGP签名过程似乎也非常技术性和耗时,更多的是灌输虚假的安全感,而不是为普通用户提供更多的安全性.
因此,不应该有一种自动/简化的方法将软件项目与OpenPGP密钥相关联,以使整个事物真正安全吗?
最佳答案 应用OpenPGP签名允许其他人通过信任网验证作者身份.由于这确实是一个相当复杂的方法,学习曲线相当陡峭,因此默认情况下不会强制执行.
Sander Mak写了一个excellent introduction about verification of OpenPGP signatures in Maven..可悲的是,他并没有表现出更好的方法来执行自动验证,而是使用商业软件作为Maven Central代理:
Automatic verification?
By now, you must be thinking ‘that is an awful lot of work just to verify a single dependency’. And you’re absolutely right. Applications typically use many dependencies, and checking them all by hand quickly becomes tedious. In my opinion, there is a huge opportunity for Maven-based build tools to support automatic PGP signature verification. Until that is the case though, you can also use Sonatype’s Nexus repository manager as a proxy to Maven Central. It can automatically check the PGP signatures for proxied artifacts and refuse to serve them when the signature check fails. Unfortunately, this is only possible using the commercial version Nexus Pro, not with the open source version.
我最近遇到了一个相当新的项目,即Verify PGP signatures plugin(code on GitHub),它是一个Maven工件,用于验证其他工件的OpenPGP签名,并允许您将允许签名的工具列入白名单.