Gradle 服务停用 HTTP
从 2020 年 1 月开始,**Gradle 服务将只服务使用 HTTPS 的请求**。从那时起,所有使用 HTTP 的请求都将被拒绝,任何使用非安全 HTTP 协议的 Gradle URL 的构建和工件镜像都将失败。
如果您通过自己的工件服务器(如 Artifactory 或 Nexus)代理我们的服务,则需要确保更新镜像配置以使用 HTTPS 而不是 HTTP。
Gradle 服务
此更改将影响以下服务。
插件门户
默认情况下,Gradle 构建工具在从插件门户解析插件时使用 HTTPS。如果您没有 声明自定义插件存储库,则您应该不受影响。
如果您的组织从 URL plugins.gradle.org/m2/*
镜像插件门户,您应该检查您的镜像是否使用 HTTPS。
Gradle 分发版
从 Gradle 1.2 开始,Gradle 包装器使用 HTTPS 下载 Gradle 分发版。如果您使用的是 HTTPS URL,则您的 gradle-wrapper.properties
应该不受影响。
Gradle 分发版从以下 URL 提供
services.gradle.org
downloads.gradle.org
downloads.gradle-dn.com
如果您的组织从这些 URL 中的任何一个镜像 Gradle 分发版,您应该检查您的镜像是否使用 HTTPS。
其他 Gradle 软件
其他 Gradle, Inc. 生成的软件发布到 Artifactory 存储库,例如 Gradle 工具 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 解析其依赖项。
当 Sonatype(Maven Central 的维护者)分析了他们一个月的流量时,他们发现 25% 的 Maven Central 下载仍然使用 HTTP。
基于这些发现,Gradle 正在参与一项行业范围内的倡议,从 2020 年 1 月 15 日或前后开始,从所有主要的工件服务器中取消对 HTTP 的支持。
截至发布本文时,以下组织也参与其中并发布了公告: