我们如何知道可以信任Maven中央存储库?

我们如何知道可以信任Maven中央存储库?,maven,Maven,很抱歉,如果这个问题不适合StackOverflow,它不是一个编码问题 我是Maven的新手,我很好奇为什么会有一个Maven中央存储库看起来可以免费访问。据我所知,它是由一家名为SonaType的公司维护的。他们在资助吗?为什么?它是否在其剩余业务中充当潜在客户开发工具?我想如果我理解了他们的理由,我就会知道是否或者如何/何时信任他们。有任何问题,请阅读条款/服务:。如果你没有一个温暖和模糊之后,那么你可以自由地不使用它。还有其他maven回购协议,但我在开发领域认识的大多数人都使用中央回购

很抱歉,如果这个问题不适合StackOverflow,它不是一个编码问题


我是Maven的新手,我很好奇为什么会有一个Maven中央存储库看起来可以免费访问。据我所知,它是由一家名为SonaType的公司维护的。他们在资助吗?为什么?它是否在其剩余业务中充当潜在客户开发工具?我想如果我理解了他们的理由,我就会知道是否或者如何/何时信任他们。

有任何问题,请阅读条款/服务:。如果你没有一个温暖和模糊之后,那么你可以自由地不使用它。还有其他maven回购协议,但我在开发领域认识的大多数人都使用中央回购协议,从来没有出现过问题。坦率地说,如果你不信任任何回购协议,你完全可以放弃你自己的回购协议(比如Artifactory)

关于Sonatype。他们是一家具有附加值的服务公司,中央回购或多或少是善意的。很多公司都有这种商业模式。说诱饵为钩子。

詹森提到了索纳类型。其中包含有关如何提交内容的链接:

这一部分特别有趣。简言之,所有提交人应提供以下内容:

  • Javadoc和源代码
  • 对提交的文件进行数字签名
  • 正确的项目元数据
    • GAV标识符(组、工件、版本)
    • 名称和说明字段以及项目URL
    • 从事该项目的开发人员
    • 许可证信息
    • 源代码存储库的位置

  • 这些信息发布了您和我需要了解的关于代码、代码是如何构建的以及更重要的是谁构建的所有信息。GPG的使用使我们能够验证二进制文件是由项目POM文件中所述的开发人员构建的。此外,Maven Central自动生成SHA校验和,使您能够验证生成过程下载的文件的完整性

    那么Sonatype能从中得到什么呢

  • 当销售他们的存储库托管软件的专业版时,这是一个很好的宣传工具。
    • 一个有用的专业特性是能够限制可以从Maven Central下载的工件。用于强制执行标准或关注第三方软件
  • Maven Central已经成为世界上最大的开源Java软件库。Sonatype使用此功能向其公司客户提供大量服务。
    • 这些提供了与公司软件使用的第三方库相关的安全漏洞的详细报告。令人印象深刻的是,这些工具可以直接集成到软件开发和构建过程中
    • Sonatype还可以提供与其代码的第三方依赖项相关的软件许可报告。对于法规遵从性非常重要,如果没有这种工具,在实践中很难做到

  • 希望这有帮助。最后,我要指出,Sonatype所做的与其他开源软件打包计划没有太大区别。Redhat、Debian和Canonical花费大量精力将软件打包,以便在操作系统中安全地分发。Maven Central可能对开发人员更为友好。

    这是一个非常好的问题,尤其是因为使用不安全的第三方库现在是OWASP的前10名。不幸的是,大多数人认为对Maven Central的信任是理所当然的。我认为他们过于乐观了

    很多人认为,因为你必须签署提交给Maven的文件,所以软件是可信的。不幸的是,他们忽略的是,如果您不能确定为库签名的密钥属于提供给Maven的原始源,那么签名就毫无意义。Maven似乎就是这样

    简单的解释 为了简化解释,请考虑下面的类比。当你去机场飞往某地时,你需要提供身份证来证明你是你所说的那个人。对于当地旅行,驾驶执照就足够了。检查您身份证的人有几件事要检查:

    • 同一来源:驾照上的名字和车票上的名字匹配吗?这阻止了奥萨马·本·拉登以巴拉克·奥巴马的名义预订机票。
    • 来源真实性:驾照上的照片看起来像是登记的人。这防止了奥萨马·本·拉登窃取巴拉克·奥巴马的驾驶执照,并用它以他的名义办理登机手续。
    • 证件真实性:驾驶证是真实的。这可以防止奥萨马·本·拉登获得一张伪造的驾照,驾照上有他的照片,但也有巴拉克·奥巴马的名字。
    现在进行同样的类比来验证来自Maven的对象。Maven文档声称上传到那里的库需要PGP签名(参考:)。想象驾驶执照类似于钥匙,车票类似于Maven工件,并问同样的问题:

  • 同一来源:签署库的密钥是否与签署库的同一原始来源的人关联
  • 源的真实性:我们是否可以验证该密钥确实属于签名它的同一原始源
  • 文档真实性:工件(库)上的PGP签名是否为有效签名
  • 为了检查同一源,只需从密钥服务器下载与工件关联的公钥,并验证它是否来自与原始源关联的电子邮件地址。例如,这可以通过以下方式完成。有关如何执行此操作的具体详细信息,请参阅

    第三个事实上是最容易做到的,因为