我正在尝试在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)
提前致谢
答案 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