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。
时间线 #
为了缓解用户过渡,此更改将分几个阶段进行。
何时 | 什么在改变? |
---|---|
Gradle 将开始从 HTTP 重定向到 HTTPS。 | |
禁用 HTTP 24 小时,并永久放弃对 TLSv1 的支持。 事后总结。 | |
HTTP 请求到 Gradle 资源将被拒绝。只支持 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
。
利用这些数据,我们确定 Nexus 请求的 16%,以及 Artifactory 请求的 11% 使用的是 HTTP 而不是 HTTPS。
我们建议您审计您的企业工件镜像,以确保它们使用 HTTPS 而不是 HTTP。
为什么要这样做? #
在 2019 年 6 月初,加入 Gradle 团队之前,我 公开披露了我关于 JVM 生态系统中许多最受欢迎的项目是如何通过 HTTP 而不是 HTTPS 来解析其依赖项的研究。
当 Sonatype(Maven Central 的维护者)分析其一个月的流量时,他们确定 Maven Central 下载量的 25% 仍然在使用 HTTP。
根据这些发现,Gradle 正在参与一项行业范围内的倡议,从 2020 年 1 月 15 日或附近开始,在所有主要的工件服务器上停用对 HTTP 的支持。
在发布此博客文章时,以下组织也在参与并已发布公告