title: javax.net.ssl.SSLHandshakeException: No negotiable cipher suite when calling Apple APNS using HTTP2 implemented by jetty library
body: <p>I am using this code and it working fine on local server, but not working on BlueMix server</p>
  
  <pre><code> public void pushNotification(String notificationTitle, String notificationBody, String token, String notificationType, int applePort) {
       HTTP2Client lowLevelClient = null;
       HttpClient client = null;
       String hostname = null;
       try {
  
           lowLevelClient = new HTTP2Client(); // create a low-level Jetty HTTP/2 client
           lowLevelClient.start();
  
           // APNs requires the use of HPACK (header compression for HTTP/2), which prevents repeated header keys and values.
           KeyStore ks = KeyStore.getInstance("PKCS12");
  
           // Ensure that the password is the same as the one used later in setKeyStorePassword()
           ks.load(AppleServiceResource.class.getClassLoader().getResourceAsStream("/resources/appleCertificate/apns_all.p12"), "a1B23".toCharArray());
  
           SslContextFactory ssl = new SslContextFactory(true);
           ssl.setKeyStore(ks);
           ssl.setKeyStorePassword("a5B93");
           FuturePromise&lt;Session&gt; sessionPromise = new FuturePromise&lt;&gt;();
  
           if (notificationType.trim().equalsIgnoreCase("Development"))
               hostname = "api.development.push.apple.com";
           else if (notificationType.trim().equalsIgnoreCase("Producation"))
               hostname = "api.push.apple.com";
           lowLevelClient.connect(ssl, new InetSocketAddress(hostname, applePort), new ServerSessionListener.Adapter(), sessionPromise);
  
           // create a high-level Jetty client
           client = new HttpClient(new HttpClientTransportOverHTTP2(lowLevelClient), ssl);
           client.start();
  
           String payload = "{\"aps\":{\"alert\":{\"title\":\"" + notificationTitle + "\",\"body\":\"" + notificationBody + "\"}, \"sound\":\"default\"}}";
  
           Request request = client.POST("https://" + hostname).timeout(20, TimeUnit.SECONDS).path("/3/device/" + token).content(new StringContentProvider(payload, Charset.forName("UTF-8")));
  
           request = request.header("apns-topic", "Skios.TripBruCACT").header("User-Agent", client.getClass().getName() + "/" + Jetty.VERSION);
           logger.info("Sending notification to token: " + token );
           ContentResponse response = request.send();
           logger.info("Response Status: " + response.getStatus());
           logger.info("Sending notification to token: " + token + " is Done.");
       } catch (Exception e) {
           e.printStackTrace();
       } finally {
           try {
               if (lowLevelClient != null &amp;&amp; !lowLevelClient.isStopped())
                   lowLevelClient.stop();
               if (client != null &amp;&amp; !client.isStopped())
                   client.stop();
           } catch (Exception e) {
               e.printStackTrace();
           }
       }
   }
  </code></pre>
  
  <p>When i use same code on BlueMix server it throws</p>
  
  <pre><code>org.eclipse.jetty.io.RuntimeIOException: javax.net.ssl.SSLHandshakeException: No negotiable cipher suite
  </code></pre>
  
  <p>and</p>
  
  <pre><code>javax.net.ssl.SSLHandshakeException: No negotiable cipher suite
  </code></pre>