title: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
body: <p>I am trying to create a connection to an mq manager that has ssl auth enabled. I am using Java 1.8</p>
  
  <p>I have this <strong>code</strong></p>
  
  <pre><code>TrustStrategy trustStrategy = new TrustSelfSignedStrategy();
  KeyStore trustStore = KeyStore.getInstance("JKS");
  try (FileInputStream fileInputStream = new FileInputStream(propertyReader.getProperty(QUEUE_KEYSTORE))) {
  trustStore.load(fileInputStream, propertyReader.getProperty(QUEUE_KEYSTOREPASS).toCharArray());
  }
  KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
  kmf.init(trustStore, "changeit".toCharArray());
  final TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
  tmf.init(trustStore);
  
  final SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
  sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), new SecureRandom());
  
  connectionFactory.setTransportType(WMQConstants.WMQ_CM_CLIENT);
  connectionFactory.setHostName(propertyReader.getProperty(QUEUE_HOST));
  connectionFactory.setQueueManager(propertyReader.getProperty(QUEUE_MANAGER));
  connectionFactory.setChannel(propertyReader.getProperty(QUEUE_CHANNEL));
  connectionFactory.setSSLCipherSuite(propertyReader.getProperty(QUEUE_CIPHERSUITE));
  connectionFactory.setPort(Integer.parseInt(propertyReader.getProperty(QUEUE_PORT)));
  connectionFactory.setSSLSocketFactory(sslContext.getSocketFactory());
  </code></pre>
  
  <p>When I try to create the connection I get this <strong>exception</strong>:</p>
  
  <pre><code>com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2397
  javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
  </code></pre>
  
  <p>I can see the following in the <strong>logs</strong>:</p>
  
  <pre><code>Allow unsafe renegotiation: false
  Allow legacy hello messages: true
  Is initial handshake: true
  Is secure renegotiation: false
  Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 for TLSv1
  No available cipher suite for TLSv1
  handling exception: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
  SEND TLSv1.2 ALERT:  fatal, description = handshake_failure
  WRITE: TLSv1.2 Alert, length = 2
  [Raw write]: length = 7
  0000: 15 03 03 00 02 02 28                               ......(
  called closeSocket()
  </code></pre>
  
  <p>Is this saying that it is still trying to use TLSv1 instead of TLCv1.2?
  I have jce unlimited strength enabled in my security file.</p>
  
  <p>Update with details:</p>
  
  <p>IBM MQ Jar Version: 6.0.2.5</p>
  
  <p>java version "1.8.0_201"</p>
  
  <p>Java(TM) SE Runtime Environment (build 1.8.0_201-b26)</p>