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

时间:2015-06-17 11:01:09

标签: java ssl https urlconnection

我正在尝试在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)

提前致谢

2 个答案:

答案 0 :(得分:0)

以&#34;结尾的大多数开发人员问题是否可能?&#34;可以回答是的。唯一的问题可能是必要的努力和成本......

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

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

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

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

答案 1 :(得分: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