从2020年1月开始,Gradle服务将只为使用HTTPS的请求提供服务。此后,所有使用HTTP的请求将被拒绝,任何使用非安全HTTP协议的Gradle URL的构建和工件镜像都将失败。
如果你通过你自己的工件服务器(如Artifactory或Nexus)代理我们的服务,你将需要确保你更新你的镜像配置,使它们使用HTTPS而不是HTTP。
Gradle服务
这一变化将影响以下服务:
插件门户
默认情况下,Gradle构建工具在解析来自Plugin Portal的插件时使用HTTPS。 如果你没有声明一个自定义的插件库,你应该不受影响。
如果你的组织从URLplugins.gradle.org/m2/镜像插件门户,你应该检查你的镜像是否使用HTTPS。
Gradle发行版
从Gradle 1.2开始,Gradle包装器就使用HTTPS来下载Gradle发行版。如果你的gradle-wrapper.properties 使用HTTPS URL,你应该不受影响。
Gradle发行版是由以下URL提供的:
services.gradle.orgdownloads.gradle.orgdownloads.gradle-dn.com
如果你的组织从这些URL中的任何一个镜像Gradle发行版,你应该检查你的镜像是否使用HTTPS。
其他Gradle软件
其他Gradle, Inc.生产的软件被发布到Artifactory仓库,例如Gradle Tooling API。大多数构建都不使用这个仓库,除非他们正在构建与Gradle集成的工具(如IntelliJ IDEA)。
Gradle Artifactory 仓库可在repo.gradle.org.
Gradle构建工具
Gradle 6.0摒弃了在构建脚本中使用 HTTP 来下载资源和工件的做法,而没有明确的选择。
对于需要使用HTTP的用户,Gradle有几个新的API来继续允许HTTP的逐案处理。
时间轴
为了便于我们的用户过渡,这一变化将分几个阶段进行。
| 什么时候 | 什么在改变? |
|---|---|
| Gradle将开始从HTTP重定向到HTTPS。 | |
| 禁用HTTP 24小时,并永久放弃对TLSv1的支持。后期调整。 | |
| 对Gradle资源的HTTP请求将被拒绝。只有HTTPS会被支持。 | |
为gradle.com 和gradle.org 启用HSTS。这一变化将只影响浏览器。 |
最有可能受到影响的用户
作为这项工作的一部分,我们花了一些时间分析我们的CDN日志数据,以确定这一变化对我们的用户产生的影响大小。
这些百分比代表了我们在72小时内的流量样本:
| 服务 | HTTP百分比 |
|---|---|
| plugins.gradle.org/m2/* | 0.72% |
| services.gradle.org | 5.77% |
| downloads.gradle.org | 23.87% |
| downloads.gradle-dn.com | 9.76% |
| repo.gradle.org | 9.53% |
按用户代理细分services.gradle.org的流量,我们可以清楚地看到,JFrog的Artifactory的用户最有可能受到这一变化的影响。
同样,我们可以看到,虽然我们最大的用户services.gradle.org 是一个Java用户代理,但Artifactory是我们的第二大用户,比其他用户代理更可能使用HTTP 。
利用这些数据,我们已经确定16%的Nexus请求,以及11%的Artifactory请求都在使用HTTP而不是HTTPS。
我们建议你审计你的企业工件镜像,以确保它们使用HTTPS而不是HTTP。
我们为什么要这样做?
在2019年6月初,在加入Gradle团队之前,我公开披露了我对整个JVM生态系统中许多最受欢迎的项目是如何通过HTTP而不是HTTPS解决其依赖关系的研究。
当Maven Central的维护者Sonatype分析他们一个月的流量时,他们发现25%的Maven Central下载仍在使用HTTP。
由于这些发现,Gradle参与了一项全行业的倡议,即从2020年1月15日或附近开始停止对所有主要构件服务器的HTTP支持。
截至本博文发表之时,这些组织也在参与,并发布了公告: