title: Certificate not being sent sporadically
body: <p>In my application I have 2 components talking to each other with REST (client-server based).<br>
  The application can be configured to use HTTP or HTTPS (self signed certificate).</p>
  
  <p>From time to time when I start my application on HTTPS mode, my client can't talk to the server. I'm getting the following exception:</p>
  
  <pre><code>    09-16-2013 12:28:52 [dispatcher] [http-nio-8143-exec-8] [INFO] - Exception while dispatching request
  java.util.concurrent.ExecutionException: com.sun.jersey.api.client.ClientHandlerException: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
      ...
  Caused by: com.sun.jersey.api.client.ClientHandlerException: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
      ...
  Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
      ...
  Caused by: java.io.EOFException: SSL peer shut down incorrectly
      ...
  </code></pre>
  
  <p>When I stopped and started the application everything worked as expected.<br>
  I tried searching for solutions, but couldn't find anything that is similar to my problem by something that happened from time to time and fixed by restart, all the problems were consistent.</p>
  
  <p>Java version: Oracle Corporation, 'Java HotSpot(TM) 64-Bit Server VM', 1.7.0_17-b02
  OS: Red Hat
  Any idea?</p>
  
  <p><strong>UPDATE</strong><br>
  Turns out this can also happen after some time the application works. Meaning, everything works fine, SSL communication is ok, and suddenly this error occur and won't resolve until I restart the client side.  </p>
  
  <p>I was able to reproduce the problem with -Djavax.net.debug=all, obviously certificate is not being sent from the client, the question is why. As sometimes everything works smoothly, what can cause things to go wrong from time to time?</p>
  
  <p>Client side:</p>
  
  <pre><code>pool-4-thread-2, WRITE: TLSv1 Handshake, length = 48
  pool-4-thread-2, waiting for close_notify or alert: state 1
  pool-4-thread-2, received EOFException: error
  pool-4-thread-2, Exception while waiting for close javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
  pool-4-thread-2, handling exception: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
  %% Invalidated:  [Session-7, TLS_RSA_WITH_AES_128_CBC_SHA]
  pool-4-thread-2, SEND TLSv1 ALERT:  fatal, description = handshake_failure
  Padded plaintext before ENCRYPTION:  len = 32
  0000: 02 28 7A 8E 21 1F 09 1A   5F 00 5C 42 6B 12 33 D8  .(z.!..._.\Bk.3.
  0010: 73 F0 58 DD 0D D9 09 09   09 09 09 09 09 09 09 09  s.X.............
  pool-4-thread-2, WRITE: TLSv1 Alert, length = 32
  pool-4-thread-2, Exception sending alert: java.net.SocketException: Broken pipe
  pool-4-thread-2, called closeSocket()
  Keep-Alive-Timer, called close()
  Keep-Alive-Timer, called closeInternal(true)
  Keep-Alive-Timer, SEND TLSv1 ALERT:  warning, description = close_notify
  Padded plaintext before ENCRYPTION:  len = 32
  0000: 01 00 FD 8B FE 50 2A 16   8A FC 10 F7 E0 05 7E D1  .....P*.........
  0010: 0A 78 A0 03 84 26 09 09   09 09 09 09 09 09 09 09  .x...&amp;..........
  Keep-Alive-Timer, WRITE: TLSv1 Alert, length = 32
  [Raw write]: length = 37
  0000: 15 03 01 00 20 24 CC 05   7B DA AA 98 D7 BC 49 07  .... $........I.
  0010: 59 94 A4 42 A1 D9 22 42   34 C2 75 1B 9E 36 F0 23  Y..B.."B4.u..6.#
  0020: 58 9D 80 8D 38                                     X...8
  Keep-Alive-Timer, called closeSocket(selfInitiated)
  </code></pre>
  
  <p>Server side:</p>
  
  <pre><code>http-nio-8243-exec-2, READ: TLSv1 Handshake, length = 269
  *** Certificate chain
  ***
  http-nio-8243-exec-2, fatal error: 42: null cert chain
  javax.net.ssl.SSLHandshakeException: null cert chain
  %% Invalidated:  [Session-5, TLS_RSA_WITH_AES_128_CBC_SHA]
  http-nio-8243-exec-2, SEND TLSv1 ALERT:  fatal, description = bad_certificate
  http-nio-8243-exec-2, WRITE: TLSv1 Alert, length = 2
  http-nio-8243-exec-2, fatal: engine already closed.  Rethrowing javax.net.ssl.SSLHandshakeException: null cert chain
  http-nio-8243-exec-2, called closeOutbound()
  http-nio-8243-exec-2, closeOutboundInternal()
  http-nio-8243-ClientPoller-1, called closeOutbound()
  http-nio-8243-ClientPoller-1, closeOutboundInternal()
  http-nio-8243-ClientPoller-1, SEND TLSv1 ALERT:  warning, description = close_notify
  </code></pre>