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

标签 maven ssl signature

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

例子来自 http://repo1.maven.org/maven2/org/apache/ant/ant/1.8.2/ :

ant-1.8.2.jar
ant-1.8.2.jar.asc
ant-1.8.2.jar.asc.md5
ant-1.8.2.jar.asc.sha1
ant-1.8.2.jar.md5
ant-1.8.2.jar.sha1
ant-1.8.2.pom
ant-1.8.2.pom.asc
ant-1.8.2.pom.asc.md5
ant-1.8.2.pom.asc.sha1
ant-1.8.2.pom.md5
ant-1.8.2.pom.sha1

我意识到我必须为每个存储库导入公钥,我对此没有意见。我猜 Maven Central 的公钥在这里 https://svn.apache.org/repos/asf/maven/project/KEYS .

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

(Nexus Professional 不是一个选项)

谢谢你的帮助。

最佳答案

现在,人们似乎意识到这是一个真正的安全问题(如this blog-post中所述(博客似乎已关闭,这是博客的archived version)),有一个plugin for verifying PGP signatures .您可以使用以下命令验证项目所有依赖项的签名:

mvn org.simplify4u.plugins:pgpverify-maven-plugin:check

当然,要 100% 确定插件本身不是恶意的,您必须下载并验证 source for the plugin从 Maven Central,用 Maven 构建它,然后执行它。 (这也应该递归地对构建所需的所有依赖项和插件完成。)

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

另见:

关于Maven 验证下载的 pom/jar 文件的签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6565084/

相关文章:

Maven surefire 插件报告 - 文件名太长

java - 如何使用 Bouncy CaSTLe 在 Java 中编辑密码套件列表

java - SignedXml checksignature 返回 false。

java - 如何在使用自己的证书时启用 PDF LTV 签名 (Adobe java PDFBox)

c# - 基于证书的认证基础

signature - 如何解决 Perl 6 签名中的模糊参数?

java - 从 subversion repo 中排除哪些 eclipse 文件

java - Jackson 数据绑定(bind)在 IDE 环境中工作但不在 jar 中

java - Maven 构建导致 Java 1.7 出现 VerifyError

c# - ActiveMQ、SSL、C#