Maven 包签名或您如何信任/验证 Maven Central 工件的完整性和真实性?
Posted
技术标签:
【中文标题】Maven 包签名或您如何信任/验证 Maven Central 工件的完整性和真实性?【英文标题】:Maven package signing or how you trust/verify Maven Central artifacts for integrity and authentity? 【发布时间】:2014-07-24 06:14:12 【问题描述】:我从 C 世界来到 Java。在 C 中,大多数库是来自签名包的系统,来自带有 .gpg 签名的开源主页,或者来自供应商通过受信任的来源。
在 Java 包分发的情况下,我调查.m2
目录和文件内容。没有签名!
用空的~/.m2/settings.xml
和最小的pom.xml
我得到:
$ mvn help:effective-settings
...
http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-javadoc-plugin/2.8.1/maven-javadoc-plugin-2.8.1.pom
所以从 HTTP 加载包,而不是 HTTPS!但是使用 HTTPS,您可以在 GoDaddy 以 100 美元的价格获得证书。
您的团队如何使用 Maven 包管理安全性?
由于安全问题,您是否限制您的团队安装自己的 Nexus,放置受信任/审查过的软件包或禁止任何开源软件包/任何外部软件包?
更新我发现我们团队的一些人把这个来源:
http://oss.sonatype.org/content/repositories/snapshots/代替:
https://oss.sonatype.org/content/repositories/snapshots/为了减少 SSL/TLS 握手的服务器负载和维护成本,大多数免费 Maven 服务提供 HTTP 和 HTTPS 连接。为了安全起见,完全关闭 HTTP 端口会很好,但是谁支付了托管公司的 CPU 时间......
【问题讨论】:
“但谁为托管公司的 CPU 时间付费” - 据我所知,对于大多数人来说,TLS 性能受到的影响被大大高估了,请参阅:blog.haproxy.com/2011/09/16/benchmarking_ssl_performance。他们在 Intel Atom 上每秒获得 2300 个 SSL 事务。今天,您可以使用 ECDSA 密钥和 AES_GCM 获得更好的性能,后者在大多数现代 CPU 上都有硬件支持。 我调查了性能问题,发现我错了...平均 .jar 大小为 500 KiB。 10 GB/s ~= 1 Gbyte/s,磁盘读取大约 50 Mbyte/s。所以从缓存你可以得到 2.000 pkg/s,从磁盘 100 pkg/s。所以 SSL 似乎不是一个限制...... 【参考方案1】:我阅读了优秀的博文:
http://softwaremavens.blogspot.com/2010/01/top-10-reasons-why-maven-sucksnot.html
在 cmets 中我找到了以下链接:
http://docs.codehaus.org/display/MAVEN/Repository+Security
其中列出了为存储库添加安全性的不完整计划(最后一次触及页面是在 2008 年!!)。
【讨论】:
以上是关于Maven 包签名或您如何信任/验证 Maven Central 工件的完整性和真实性?的主要内容,如果未能解决你的问题,请参考以下文章
如何判断哪个签名的 jar 导致 maven-shade-plugin 失败?
Springboot中如何引入本地jar包,并通过maven把项目成功打包成jar包部署
Github Actions 使用 maven 对另一个存储库的私有包注册表进行身份验证
如何让 python 信任我服务器的 TLS 自签名证书:ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败