java.lang.IllegalArgumentException:JRE 1.5上的TLSv1.2

问题描述 投票:1回答:2

我试图在JRE 1.5上使用支持TLSv1.2的协议Web服务并面临下面的问题。看起来JRE1.5不支持TLSv1.2,但同时我们无法将目标环境升级到最新版本的JRE。有没有办法让这个工作在jdk1.5本身?

Exception in thread "main" java.lang.IllegalArgumentException: TLSv1.2
    at com.sun.net.ssl.internal.ssl.ProtocolVersion.valueOf(ProtocolVersion.java:120)
    at com.sun.net.ssl.internal.ssl.ProtocolList.<init>(ProtocolList.java:36)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.setEnabledProtocols(SSLSocketImpl.java:2017)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:396)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:170)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:857)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:230)
    at TLSHandshake.main(TLSHandshake.java:43)

提前致谢

java ssl https urlconnection
2个回答
0
投票

大多数开发人员的问题以“有可能吗?”结尾。可以回答是的。唯一的问题可能是必要的努力和成本......

Java在很大程度上是一个模块化体系结构,这意味着您可以实现自己的模块来替换和扩展Java的功能。

如果需要,您可以实现自己的网络实现,该实现使用JNI部分来建立TLS 1.2连接。 JNI部分将使用一个常见的SSL / TLS本机库,如OpenSSL / LibreSSL / gnutls,...)。

根据我的理解,这将需要一个非常有经验的Java和C / C ++开发人员(团队)几周/几个月。

从长期角度来看,使用该开发人员(团队)迁移到Java 1.7 / 1.8会更有意义。


0
投票

你可以使用bouncy castle tls提供程序库,它支持jdk 1.5

他们的库的下载站点在这里https://www.bouncycastle.org/latest_releases.html你也可以使用maven。

还有一个关于如何使用他们的提供者的例子:https://github.com/bcgit/bc-java/blob/master/tls/src/test/java/org/bouncycastle/jsse/provider/test/BCJSSEClientTest.java#L31-L35

© www.soinside.com 2019 - 2024. All rights reserved.