修复在 TLS v1.1 和 v1.0 支持停止后 Gradle 依赖解析的问题

目录

介绍

Maven Central 和 Bintray 已宣布他们将停止支持 TLS v1.1 及更低版本。如果您受到影响,以下是您需要了解的更正 Gradle 构建的信息。

如果您正在使用 Java 6 或 7 以及 Gradle 2.1 至 4.8 版本,则需要采取行动。

如何检查您是否受到影响 #

在收到错误消息“Could not resolve [coordinates]”之后,您的构建可能已经收到以下错误之一:

收到致命警报:protocol_version

对等方未经验证

如果没有,您可以运行以下命令来检查您是否会受到影响

gradle --version       # Without Gradle Wrapper

./gradlew --version    # Using Gradle Wrapper on *nix

gradlew.bat --version  # Using Gradle Wrapper on Windows

它将打印如下内容

------------------------------------------------------------
Gradle 3.5
------------------------------------------------------------

Build time:   2017-04-10 13:37:25 UTC
Revision:     b762622a185d59ce0cfc9cbc6ab5dd22469e18a6

Groovy:       2.4.10
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.7.0_80 (Oracle Corporation 24.80-b11)
OS:           Mac OS X 10.13.5 x86_64

如果以下所有条件都为真,您必须采取行动

  • JVM 版本是 Java 7u130 或更低版本
  • 并且 Gradle 版本介于 2.1 和 4.8 之间(包含 2.1 和 4.8)
  • 并且 您已声明 mavenCentral()jcenter()repository {}

如何使用 TLS 1.2 进行依赖解析 #

您可以采取以下任一操作来使用 TLS v1.2+

  • 使用 Java 1.7.0_131-b31 或更高版本运行 Gradle
  • 或者 升级到 Gradle 4.8.1 或更高版本
  • 或者mavenCentral() 替换为 maven { url = "http://repo.maven.apache.org/maven2" },并将 jcenter() 替换为 maven { url = "http://jcenter.bintray.com" }

建议使用前两种解决方案,因为第三种解决方案可能会打开攻击途径。

其他资源 #

关于停止支持旧版本 TLS 的帖子,在 Maven Central 上Bintray 知识库中 解释了这些更改的必要性背景。

您还可以在 GitHub 上的 gradle/gradle#5740 中找到 Gradle 特定的详细信息。

讨论