JDK-8200724 : Applet doesn't launch with SSL 2.0 enabled: javax.net.ssl.SSLHandshakeException
  • Type: Bug
  • Component: security-libs
  • Sub-Component: javax.net.ssl
  • Affected Version: 8u171
  • Priority: P3
  • Status: Closed
  • Resolution: Not an Issue
  • Submitted: 2018-04-04
  • Updated: 2018-05-22
  • Resolved: 2018-05-22
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8
8u181Resolved
Related Reports
Relates :  
Description
The application is not launching with JRE 1.8U171, if SSL 2.0 is enabled. 

The application is launching fine in JRE 1.8U171, only when SSL 2.0 is disabled (in Java settings and browser settings), but we are getting Null pointer Exception if SSL 2.0 is enabled. 

JRE 1.8U171 ->  SSL 2.0 -> Enabled ->Unable to launch application. `Null pointer Exception�� is displayed. 
JRE 1.8U171 ->  SSL 2.0 -> Disabled ->Application is launching fine.

Further debugging with javax.net.debug=ssl shows these logs : 

===

 278 Thread-9, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure^M
 279 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure^M
 280 at sun.security.ssl.Alerts.getSSLException(Unknown Source)^M
 281 at sun.security.ssl.Alerts.getSSLException(Unknown Source)^M
 282 at sun.security.ssl.SSLSocketImpl.recvAlert(Unknown Source)^M
 283 at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)^M
 284 at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)^M
 285 at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)^M
 286 at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)^M
 287 at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)^M
 288 at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)^M
 289 at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)^M
 290 at sun.net.www.protocol.http.HttpURLConnection.access$200(Unknown Source)^M
 291 at sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)^M
 292 at sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)^M
 293 at java.security.AccessController.doPrivileged(Native Method)^M
 294 at java.security.AccessController.doPrivilegedWithCombiner(Unknown Source)^M
 295 at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)^M
 296 at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)^M
 297 at com.sun.deploy.net.HttpUtils.followRedirects(Unknown Source)^M
 298 at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)^M
 299 at com.sun.deploy.net.BasicHttpRequest.doGetRequestEX(Unknown Source)^M
 300 at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)^M
 301 at com.sun.deploy.net.DownloadEngine.downloadResource(Unknown Source)^M
 302 at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)^M
 303 at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)^M
 304 at com.sun.deploy.model.ResourceProvider.getResource(Unknown Source)^M
 305 at com.sun.javaws.jnl.LaunchDescFactory._buildDescriptor(Unknown Source)^M
 306 at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)^M
 307 at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)^M
 308 at sun.plugin2.applet.JNLP2Manager.initialize(Unknown Source)^M
 309 at sun.plugin2.main.client.PluginMain.initManager(Unknown Source)^M
 310 at sun.plugin2.main.client.PluginMain.access$200(Unknown Source)^M
 311 at sun.plugin2.main.client.PluginMain$2.run(Unknown Source)^M
 312 at java.lang.Thread.run(Unknown Source)^M

 448 Caused by:^M
 449 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure^M
 450 at sun.security.ssl.Alerts.getSSLException(Unknown Source)^M
 451 at sun.security.ssl.Alerts.getSSLException(Unknown Source)^M
 452 at sun.security.ssl.SSLSocketImpl.recvAlert(Unknown Source)^M
 453 at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)^M
 454 at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)^M
 455 at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)^M
 456 at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)^M
 457 at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)^M
 458 at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)^M
 459 at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)^M
 460 at sun.net.www.protocol.http.HttpURLConnection.access$200(Unknown Source)^M
 461 at sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)^M
 462 at sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)^M
 463 at java.security.AccessController.doPrivileged(Native Method)^M
 464 at java.security.AccessController.doPrivilegedWithCombiner(Unknown Source)^M
 465 at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)^M
 466 at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)^M
 467 at com.sun.deploy.net.HttpUtils.followRedirects(Unknown Source)^M
 468 at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)^M
 469 at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)^M
 470 at com.sun.deploy.net.BasicHttpRequest.doGetRequest(Unknown Source)^M

===
Comments
further request made to submitter to run standalone testcase against problematic server : 8u171\bin\java -Dhttps.protocols=SSLv2Hello,TLSv1.2 SSLConnect If proxy is required, see https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html see : http.proxyHost, http.proxyPort https.proxyHost, https.proxyPort SSLConnect.java ========= import java.io.*; import java.net.*; import javax.net.ssl.*; public class SSLConnect { public static void main(String[] args) throws Exception { System.setProperty("javax.net.debug", "ssl"); System.setProperty("java.security.debug", "certpath"); URL u = new URL("https://<problem_server>"); BufferedReader in = new BufferedReader(new InputStreamReader(u.openStream())); System.out.println("Connected"); } }
03-05-2018

8u171 release notes : http://www.oracle.com/technetwork/java/javase/8u171-relnotes-4308888.html
03-05-2018