-
Bug
-
Resolution: Duplicate
-
P3
-
None
-
9
-
x86
-
os_x
FULL PRODUCT VERSION :
A DESCRIPTION OF THE PROBLEM :
See details onJDK-8172163
REGRESSION. Last worked in version 8u121
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Here is a repro modified from a JDK9 ALPN test
http://pastebin.com/BgHRJHda
It runs standalone but assumes you have copied ./jdk/test/javax/net/ssl/etc into the directory you run this from
Fails in Java 9 with
Exception in thread "main" java.net.SocketException: Broken pipe (Write failed)
at java.base/java.net.SocketOutputStream.socketWrite0(Native Method)
at java.base/java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
at java.base/java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at java.base/sun.security.ssl.SSLSocketOutputRecord.flush(SSLSocketOutputRecord.java:236)
at java.base/sun.security.ssl.HandshakeOutStream.flush(HandshakeOutStream.java:79)
at java.base/sun.security.ssl.Handshaker.sendChangeCipherSpec(Handshaker.java:1171)
at java.base/sun.security.ssl.ClientHandshaker.sendChangeCipherAndFinish(ClientHandshaker.java:1336)
at java.base/sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:1240)
at java.base/sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:414)
at java.base/sun.security.ssl.Handshaker.processLoop(Handshaker.java:1061)
at java.base/sun.security.ssl.Handshaker.processRecord(Handshaker.java:995)
at java.base/sun.security.ssl.SSLSocketImpl.processInputRecord(SSLSocketImpl.java:1132)
at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1069)
at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:968)
at java.base/sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1395)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1422)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1406)
at SSLSocketAlpnTest.doClientSide(SSLSocketAlpnTest.java:232)
at SSLSocketAlpnTest.startClient(SSLSocketAlpnTest.java:475)
at SSLSocketAlpnTest.<init>(SSLSocketAlpnTest.java:357)
at SSLSocketAlpnTest.main(SSLSocketAlpnTest.java:293)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:538)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:143)
Caused by: javax.net.ssl.SSLHandshakeException: null cert chain
at java.base/sun.security.ssl.Alerts.getSSLException(Alerts.java:198)
at java.base/sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1962)
at java.base/sun.security.ssl.Handshaker.fatalSE(Handshaker.java:309)
at java.base/sun.security.ssl.Handshaker.fatalSE(Handshaker.java:299)
at java.base/sun.security.ssl.ServerHandshaker.clientCertificate(ServerHandshaker.java:1950)
at java.base/sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:248)
at java.base/sun.security.ssl.Handshaker.processLoop(Handshaker.java:1061)
at java.base/sun.security.ssl.Handshaker.processRecord(Handshaker.java:995)
at java.base/sun.security.ssl.SSLSocketImpl.processInputRecord(SSLSocketImpl.java:1132)
at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1069)
at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:968)
at java.base/sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1395)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1422)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1406)
at SSLSocketAlpnTest.doServerSide(SSLSocketAlpnTest.java:156)
at SSLSocketAlpnTest$1.run(SSLSocketAlpnTest.java:431)
Which gives another workaround, as I can grab the cause.
In Java 8 I get
javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
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:1991)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1104)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1343)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1371)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
at SSLSocketFailedClientTest.doClientSide(SSLSocketFailedClientTest.java:185)
at SSLSocketFailedClientTest.startClient(SSLSocketFailedClientTest.java:389)
at SSLSocketFailedClientTest.<init>(SSLSocketFailedClientTest.java:271)
at SSLSocketFailedClientTest.main(SSLSocketFailedClientTest.java:216)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:143)
Caused by: javax.net.ssl.SSLHandshakeException: null cert chain
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1917)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:301)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:291)
at sun.security.ssl.ServerHandshaker.clientCertificate(ServerHandshaker.java:1797)
at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:222)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:925)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:860)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1043)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1343)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1371)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
at SSLSocketFailedClientTest.doServerSide(SSLSocketFailedClientTest.java:139)
at SSLSocketFailedClientTest$1.run(SSLSocketFailedClientTest.java:345)
REPRODUCIBILITY :
This bug can be reproduced always.
A DESCRIPTION OF THE PROBLEM :
See details on
REGRESSION. Last worked in version 8u121
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Here is a repro modified from a JDK9 ALPN test
http://pastebin.com/BgHRJHda
It runs standalone but assumes you have copied ./jdk/test/javax/net/ssl/etc into the directory you run this from
Fails in Java 9 with
Exception in thread "main" java.net.SocketException: Broken pipe (Write failed)
at java.base/java.net.SocketOutputStream.socketWrite0(Native Method)
at java.base/java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
at java.base/java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at java.base/sun.security.ssl.SSLSocketOutputRecord.flush(SSLSocketOutputRecord.java:236)
at java.base/sun.security.ssl.HandshakeOutStream.flush(HandshakeOutStream.java:79)
at java.base/sun.security.ssl.Handshaker.sendChangeCipherSpec(Handshaker.java:1171)
at java.base/sun.security.ssl.ClientHandshaker.sendChangeCipherAndFinish(ClientHandshaker.java:1336)
at java.base/sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:1240)
at java.base/sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:414)
at java.base/sun.security.ssl.Handshaker.processLoop(Handshaker.java:1061)
at java.base/sun.security.ssl.Handshaker.processRecord(Handshaker.java:995)
at java.base/sun.security.ssl.SSLSocketImpl.processInputRecord(SSLSocketImpl.java:1132)
at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1069)
at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:968)
at java.base/sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1395)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1422)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1406)
at SSLSocketAlpnTest.doClientSide(SSLSocketAlpnTest.java:232)
at SSLSocketAlpnTest.startClient(SSLSocketAlpnTest.java:475)
at SSLSocketAlpnTest.<init>(SSLSocketAlpnTest.java:357)
at SSLSocketAlpnTest.main(SSLSocketAlpnTest.java:293)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:538)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:143)
Caused by: javax.net.ssl.SSLHandshakeException: null cert chain
at java.base/sun.security.ssl.Alerts.getSSLException(Alerts.java:198)
at java.base/sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1962)
at java.base/sun.security.ssl.Handshaker.fatalSE(Handshaker.java:309)
at java.base/sun.security.ssl.Handshaker.fatalSE(Handshaker.java:299)
at java.base/sun.security.ssl.ServerHandshaker.clientCertificate(ServerHandshaker.java:1950)
at java.base/sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:248)
at java.base/sun.security.ssl.Handshaker.processLoop(Handshaker.java:1061)
at java.base/sun.security.ssl.Handshaker.processRecord(Handshaker.java:995)
at java.base/sun.security.ssl.SSLSocketImpl.processInputRecord(SSLSocketImpl.java:1132)
at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1069)
at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:968)
at java.base/sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1395)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1422)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1406)
at SSLSocketAlpnTest.doServerSide(SSLSocketAlpnTest.java:156)
at SSLSocketAlpnTest$1.run(SSLSocketAlpnTest.java:431)
Which gives another workaround, as I can grab the cause.
In Java 8 I get
javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
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:1991)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1104)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1343)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1371)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
at SSLSocketFailedClientTest.doClientSide(SSLSocketFailedClientTest.java:185)
at SSLSocketFailedClientTest.startClient(SSLSocketFailedClientTest.java:389)
at SSLSocketFailedClientTest.<init>(SSLSocketFailedClientTest.java:271)
at SSLSocketFailedClientTest.main(SSLSocketFailedClientTest.java:216)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:143)
Caused by: javax.net.ssl.SSLHandshakeException: null cert chain
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1917)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:301)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:291)
at sun.security.ssl.ServerHandshaker.clientCertificate(ServerHandshaker.java:1797)
at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:222)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:925)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:860)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1043)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1343)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1371)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
at SSLSocketFailedClientTest.doServerSide(SSLSocketFailedClientTest.java:139)
at SSLSocketFailedClientTest$1.run(SSLSocketFailedClientTest.java:345)
REPRODUCIBILITY :
This bug can be reproduced always.
- duplicates
-
JDK-8172163 ClientAuth failure is SocketException instead of SSLHandshakeException
-
- Closed
-