我试图找出是否有启用 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/