Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8174802

Test case for issue JDK-8172163

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P3 P3
    • None
    • 9
    • security-libs

      FULL PRODUCT VERSION :


      A DESCRIPTION OF THE PROBLEM :
      See details on JDK-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.

            psonal Pallavi Sonal (Inactive)
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: