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 发行版。如果您的 gradle-wrapper.properties 使用 HTTPS URL,则不会受到影响。

Gradle 发行版服务于以下 URL

  • services.gradle.org
  • downloads.gradle.org
  • downloads.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。

时间线 #

为了缓解用户过渡,此更改将分几个阶段进行。

何时 什么在改变?
2019 年 10 月 29 日 Gradle 将开始从 HTTP 重定向到 HTTPS。
2019 年 11 月 14 日 禁用 HTTP 24 小时,并永久放弃对 TLSv1 的支持。 事后总结
2020 年 1 月 15 日 HTTP 请求到 Gradle 资源将被拒绝。只支持 HTTPS。
2020 年 2 月 15 日 gradle.comgradle.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 用户最有可能受到此更改的影响。

HTTP by Agent for services.gradle.org

同样,我们可以看到,虽然我们最大的 services.gradle.org 用户是 Java 用户代理,但 Artifactory 是我们的第二大用户,并且比任何其他用户代理更有可能使用 HTTP

HTTP vs HTTPS for services.gradle.org by Agent

利用这些数据,我们确定 Nexus 请求的 16%,以及 Artifactory 请求的 11% 使用的是 HTTP 而不是 HTTPS。

我们建议您审计您的企业工件镜像,以确保它们使用 HTTPS 而不是 HTTP。

为什么要这样做? #

mitm_build

在 2019 年 6 月初,加入 Gradle 团队之前,我 公开披露了我关于 JVM 生态系统中许多最受欢迎的项目是如何通过 HTTP 而不是 HTTPS 来解析其依赖项的研究

SonatypeMaven Central 的维护者)分析其一个月的流量时,他们确定 Maven Central 下载量的 25% 仍然在使用 HTTP。

根据这些发现,Gradle 正在参与一项行业范围内的倡议,从 2020 年 1 月 15 日或附近开始,在所有主要的工件服务器上停用对 HTTP 的支持。

在发布此博客文章时,以下组织也在参与并已发布公告

讨论