关于java:为什么我会得到javax.net.ssl.SSLException:收到致命警报:ant的protocol_version?

Why am I getting javax.net.ssl.SSLException: Received fatal alert: protocol_version for ant?

我在2018年6月之后收到此错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
javax.net.ssl.SSLException: Received fatal alert: protocol_version
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
        at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1979)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1086)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
        at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
        at org.apache.tools.ant.taskdefs.Get$GetThread.openConnection(Get.java:731)
        at org.apache.tools.ant.taskdefs.Get$GetThread.get(Get.java:652)
        at org.apache.tools.ant.taskdefs.Get$GetThread.run(Get.java:642)

原因是ant使用例如ivy插件从Maven Central下载了一些工件。
Java 7默认使用旧的TLS协议版本。
2018年6月,TLS 1.0


n