1
1
is it possible to turn on TLS 1.2 in .jnlp file to download .jar from HTTPS server where only TLS 1.2 is set? I've tried in many ways:
<resources>
<j2se (...) />
<jar (...) />
<property name="deployment.security.TLSv1.2" value="true" />
<property name="jnlp.deployment.security.TLSv1.2" value="true" />
<property name="java.deployment.security.TLSv1.2" value="true" />
<property name="https.protocols" value="TLSv1.2" />
<property name="jnlp.https.protocols" value="TLSv1.2" />
<property name="javaws.https.protocols" value="TLSv1.2" />
</property>
</resources>
but none of them works - during launching jnlp (downloading .jar) I get exception:
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1959)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1077)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java
(...)
If I set "Use TLS 1.2" setting in Java Control Panel, everythings works - I can download jar and my app starts successfully.
But I'd like to turn on TLS 1.2 in jnlp file regardless of setting in JCP, because many of my clients still use Java 7 and I'd like to do it without their action.
UPDATE:
Here is a fragment (end) of Console tab, when I launch jnlp via command:
javaws -J-Djavax.net.debug=all FILE.jnlp:
Java Web Start 10.51.2.13
Using JRE version 1.7.0_51-b13 Java HotSpot(TM) 64-Bit Server VM
User home directory =
(...)
[Raw read]: length = 5
0000: 15 03 03 00 02 .....
[Raw read]: length = 2
0000: 02 28 .(
Thread-8, READ: TLSv1.2 Alert, length = 2
Thread-8, RECV TLSv1 ALERT: fatal, handshake_failure
Thread-8, called closeSocket()
[Raw read]: length = 5
Thread-8, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
0000: 15 03 03 00 02 .....
[Raw read]: length = 2
0000: 02 28 .(
Thread-7, READ: TLSv1.2 Alert, length = 2
Thread-7, RECV TLSv1 ALERT: fatal, handshake_failure
Thread-7, called closeSocket()
Thread-7, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
#### Java Web Start Error:
#### Unable to load resource: https://ADDRESS/FILE.jar
ADDRESS/FILE.jar exists (as I said in main post) - if I turn "Use TLS 1.2" on, the file downloads OK.
Could you run with
-Djavax.net.debug=all
or-Djavax.net.debug=ssl:handshake:verbose
to get or more verbose output about the handshake failure ? – Cyrbil – 2015-07-22T08:04:22.250Of course, I've updated my post – Buffalo – 2015-07-22T09:21:13.987
Blind shoot, does setting
deployment.security.TLSv1
to false,deployment.security.TLSv1.2
to true andhttps.protocols
to TLSv1.2 make a change ? – Cyrbil – 2015-07-22T10:14:19.937Unfortunately, it doesn't work - the same exception. – Buffalo – 2015-07-24T05:58:39.850
I have no environment setup to try and test out, so I can't really help you much on this. Normally I though tls would fall back for the server version but it seems suborn with TLSv1 by default on java7 also it supports all versions ... I upvote your question hoping you will get better attention :) Best of luck. – Cyrbil – 2015-07-24T07:43:34.070