当前位置: 首页 > 知识库问答 >
问题:

如果任何人都可以创建和上传任何密钥,Maven的OpenPGP签名有什么意义?

薄腾
2023-03-14

Sonatype要求(非快照版本)工件是GPG签名的;公共OpenPGP密钥应上载到(MIT)密钥服务器。

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

所以看起来,整个OpenPGP签名过程(也是相当技术性和耗时的过程)更多地是为了灌输一种错误的安全意识,而不是实际上为普通用户提供多少安全。

那么难道不应该有一种自动/精简的方式将软件项目与OpenPGP密钥相关联,以使整个事情实际上是安全的吗?

共有1个答案

洪旻
2023-03-14

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

Sander Mak写了一篇关于在Maven中验证OpenPGP签名的精彩介绍。遗憾的是,他没有展示一种更好的方法来执行自动验证,但使用商业软件作为Maven中央代理:

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

我最近遇到了一个相当新的项目,验证PGP签名插件(GitHub上的代码),这是一个Maven工件,用于验证其他工件的OpenPGP签名,并使您能够白名单允许签名给定工件的密钥。

 类似资料:
  • 我只使用自签名证书进行测试。 问题: Q1.我想知道为什么我需要在步骤6中将服务器和客户端自己的证书添加到各自的信任库中。 2.创建x509证书 openssl req-x509-new-nodes-key diagserverca.key-sha256-days 1024-out diagserverca.pem 3.从私钥和公共证书创建PKCS12密钥存储库。 keytool-importke

  • 从Web API 2的模板中,post方法总是这样的: 我不理解这个< code>CreatedAtRoute()方法。有人能给我解释一下吗?

  • 当我在网上浏览一些帖子,学习更多关于为Android应用程序签名的知识时,我得到了一些帖子,比如如何为应用程序签名,以及如果您丢失了密钥库文件或密码该怎么办。 我知道对于Android我们使用的密码是Android,那么,如果默认的密码是Android,怎么会让人忘记呢?(我确信一定有其他方法可以创建新的密钥库)。 最后,如果android是默认密码,那么默认别名是什么?

  • 问题内容: 我有以下查询: 当我这样做时,第一行显示的内容包括: 为什么键为NULL? 问题答案: 可能是因为统计信息已损坏,或者是因为它知道两个表之间始终具有1:1的比率。 您可以强制在查询中使用索引,并查看这样做是否可以加快速度。如果是这样,请尝试运行ANALYZE TABLE以确保统计信息是最新的。 通过指定USE INDEX(index_list),可以告诉MySQL仅使用命名索引之一来查

  • 我需要使用私钥和公钥读取OpenID Connect流中的加密ID令牌。不需要证书。 首先我跑了: openssl req-新-新密钥rsa:2048-密钥输出密钥。pem-pubkey-out pubreq。pem-SUB“/CN=我的密钥” 获得了公钥和私钥。 然后我跑了: openssl pkcs12-导出-inkey密钥。pem-out encryptedprivatekeytest。p1

  • 问题内容: 我注意到JLS谈论5.1.10捕获转换,但是我不明白它们是什么。 谁能向我解释/举一些例子? 问题答案: 捕获转换旨在使通配符(通用)有用。 假设我们有以下课程: 在我们代码的某个地方, 因为不是原始值,并且因为在“ hindsight”中返回a ,所以编译器知道有一个充当的类型参数。这是针对未知的,因此编译器会擦除未知类型(对于通配符,它​​将替换为),因此返回。 但是如果有的话 编