Maven验证下载的pom/jar文件的签名

Maven验证下载的pom/jar文件的签名,maven,ssl,signature,Maven,Ssl,Signature,我试图找到是否有支持SSL的中央存储库,但可能没有。我注意到maven中央存储库中的每个jar和pom文件都有签名。所以至少我想检查所有maven下载文件(pom/jar)的签名 示例来自: 我意识到我必须为每个存储库导入公钥,对此我没有意见。我猜maven central的公钥在这里 网上有很多关于如何与maven签约的教程。但是,我没有找到任何关于如何强制maven(2或3)验证下载的jar/pom文件签名的信息。可能吗 (Nexus Professional不是一个选项) 谢谢您的帮助。假

我试图找到是否有支持SSL的中央存储库,但可能没有。我注意到maven中央存储库中的每个jar和pom文件都有签名。所以至少我想检查所有maven下载文件(pom/jar)的签名

示例来自:

我意识到我必须为每个存储库导入公钥,对此我没有意见。我猜maven central的公钥在这里

网上有很多关于如何与maven签约的教程。但是,我没有找到任何关于如何强制maven(2或3)验证下载的jar/pom文件签名的信息。可能吗

(Nexus Professional不是一个选项)


谢谢您的帮助。

假设您只想下载带有有效校验和的工件,一个选项是运行OSS版本的Nexus,并将其配置为具有central代理。然后将settings.xml配置为仅从repo加载(settings.xml中的镜像标记)。然后,您可以将nexus配置为只允许具有有效校验和的工件。

现在可以通过令牌支付对Central进行SSL访问。发件人:

我们使任何下载开放源代码组件的人都可以使用到Central的SSL连接,而不考虑存储库管理器

为了确保那些依赖SSL的人获得最高级别的性能,我们使用令牌保护服务。您只需提供一笔10美元的捐款就可以为您的组织获得代币,这笔捐款将捐赠给开源事业


您可以使用GnuPG编写bashshell脚本来验证每个sig吗

比如:
用于*.jar中的x;dogpg——验证“${x}”.asc;完成


显然,在开始之前,您需要所有SIG的公钥。

现在,人们似乎意识到这是一个真正的安全问题(如中所述(博客似乎已关闭,这里是博客的一部分)),这里有一个。可以使用以下命令验证项目所有依赖项的签名:

mvn org.simplify4u.plugins:pgpverify-maven-plugin:check
当然,要100%确保插件本身不是恶意的,您必须从maven central下载并验证插件,使用maven构建插件,然后执行插件。(对于构建所需的所有依赖项和插件,这也应该递归地完成。)

或者使用Maven 3.2.3或更高版本(带有干净的存储库),它使用TLS下载所有人工制品。因此,中间人攻击是不可能的,你至少可以得到maven central上的人工制品

另见:


*.asc文件是PGP签名。每个工件都用单个上传者的密钥签名,所以我不知道密钥是否包含它们。并且,当向Sonatype OSS服务器注册时,没有任何阶段将上传者的PGP密钥存档。也就是说,我也想得到一个答案。将此功能添加到Maven是一个(目前尚未解决的)问题。您使用的是Artifactory还是类似的工具?这是一种选择吗?看看插件:您还需要获取签名,因为它们通常不在您的回购协议中。这是/曾经是正确的,但现在已经过时了。参见Sonatype的公告:
mvn org.simplify4u.plugins:pgpverify-maven-plugin:check