title: How to correct IBM MQ Error when SSL is enabled
body: <p>We have enabled SSL on</p>
  
  <ol>
  <li>MQ version '7.1.0.7'   </li>
  <li>OS->'Linux 2.6.32-642.11.1.el6.x86_64'   </li>
  <li>two months back [aug-2016] and its working fine with SSL enabled and disabled mode  </li>
  </ol>
  
  <p>Java Client uses</p>
  
  <ol>
  <li>jdk1.7.0_21  </li>
  <li>Worked cipher/suite -> <code>SSL_RSA_WITH_RC4_128_SHA &lt;&gt; RC4_SHA_US</code></li>
  </ol>
  
  <p>When I try to connect to a MQ v7.1.0.7 queue manager the application is throwing below error:</p>
  
  <pre><code> com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2397'.
           at com.ibm.mq.MQManagedConnectionJ11.&lt;init&gt;(MQManagedConnectionJ11.java:228)
           at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:553)
           at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:593)
           at com.ibm.mq.StoredManagedConnection.&lt;init&gt;(StoredManagedConnection.java:95)
           at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:198)
           at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:882)
  </code></pre>
  
  <p><strong>In the queue manager error log <code>AMQERR01.LOG</code> I see this:</strong></p>
  
  <pre><code>AMQ9616: The CipherSpec proposed is not enabled on the server.
  
   EXPLANATION: The SSL or TLS subsystem at the server end of a channel
   been configured in such a way that it has rejected the CipherSpec
   proposed by an SSL or TLS client. This rejection occurred during the
   secure socket handshake (i.e. it happened before the proposed
   CipherSpec was compared with the CipherSpec in the server channel
   definition). 
  </code></pre>
  
  <p>We have a <strong>MQ v6.0.2.12</strong> queue manager where this is working fine.</p>
  
  <p>Could some one provide help what went wrong for system , which was working before?</p>
  
  <p>Resolved by adding below lines in qm.ini file</p>
  
  <pre><code>SSL:
      AllowSSLV3=Y
      AllowWeakCipherSpec=Y
  
  </code></pre>
  
  <blockquote>
    <p><strong><em>Updated (2017/01/27) with additional questions:</em></strong></p>
  </blockquote>
  
  <p>Worked below <strong>TLSv1</strong>  </p>
  
  <ol>
  <li><code>TLS_RSA_WITH_DES_CBC_SHA       SSL_RSA_WITH_DES_CBC_SHA        TLSv1   TRUE</code></li>
  <li><code>TLS_RSA_WITH_3DES_EDE_CBC_SHA  SSL_RSA_WITH_3DES_EDE_CBC_SHA   TLSv1   TRUE</code></li>
  </ol>
  
  <p>Failed with <strong>TLSv1.2</strong></p>
  
  <ol>
  <li><code>TLS_RSA_WITH_RC4_128_SHA256    SSL_RSA_WITH_RC4_128_SHA        TLSv1.2 FALSE</code></li>
  </ol>
  
  <p>I tried with these settings:</p>
  
  <ol>
  <li><code>SSLContext sslContext = SSLContext.getInstance("TLSv1");</code>  </li>
  <li><code>-Dcom.ibm.mq.cfg.preferTLS=true</code></li>
  <li><code>-Dcom.ibm.mq.cfg.useIBMCipherMappings=false</code></li>
  </ol>
  
  <p>Error is <code>com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2397'</code></p>
  
  <p>In the <code>AMQERR01.LOG</code>  </p>
  
  <pre><code>There is a mismatch between the CipherSpecs on the local and remote ends
  of channel 'TEST.CH'. The channel will not run until this mismatch is 
  resolved.The CipherSpec required in the local channel definition is 
  'TLS_RSA_WITH_RC4_128_SHA256'. The name of the CipherSpec negotiated during
  the SSL handshake is 'RC4_SHA_US'. A code is displayed if the name of the
  negotiated CipherSpec cannot be determined
  </code></pre>
  
  <blockquote>
    <p><strong>Updated (2017/01/29) with additional questions:</strong></p>
  </blockquote>
  
  <ol>
  <li><code>SSLContext sslContext = SSLContext.getInstance("TLSv1.2");</code></li>
  <li><code>MQEnvironment.sslFipsRequired = true;</code></li>
  <li><code>MQEnvironment.sslCipherSuite ="SSL_RSA_WITH_AES_256_CBC_SHA256";</code></li>
  <li><code>ALTER CHANNEL(TEST.CH) CHLTYPE(SVRCONN) SSLCIPH(TLS_RSA_WITH_AES_256_CBC_SHA256)</code></li>
  <li><code>REFRESH SECURITY TYPE(SSL)</code></li>
  <li>Client Execute
  <code>/apps/java/jdk1.7.0_21/bin/java -Dcom.ibm.mq.cfg.preferTLS=true  -Dcom.ibm.mq.cfg.useIBMCipherMappings=false -classpath .:/tmp/mqssl/com.ibm.mq.jmqi.jar:/tmp/mqssl/com.ibm.mq.jar:com.ibm.ws.webservices.thinclient_8.5.0.jar MQProducerSSL</code></li>
  </ol>
  
  <p><strong>Getting error as <code>MQJE001: Completion Code '2', Reason '2400'</code></strong>
  <code>MQRC_UNSUPPORTED_CIPHER_SUITE (2400)</code></p>
  
  <blockquote>
    <p><strong>Updated (2017/01/30) with additional questions:</strong></p>
  </blockquote>
  
  <p>Still same error , but in my client java prg have enabled <code>System.setProperty("javax.net.debug", "all");</code> to see all activities  while execute client. Its Printing <code>TLS_RSA_WITH_AES_256_CBC_SHA256</code> as <code>Ignoring unavailable cipher suite</code> as below </p>
  
  <pre><code>Ignoring unavailable cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256
  </code></pre>
  
  <p><strong>Before call</strong>  </p>
  
  <pre><code>MQJE001: Completion Code '2', Reason '2400'.  
  MQJE001: Completion Code '2', Reason '2400'.  
  </code></pre>
  
  <p><strong>Tested with IBM-JDK-71 Same Exception</strong><br>
  SSL_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA&lt;>&lt;>ECDHE_ECDSA_3DES_EDE_CBC_SHA256<br>
  SSL_ECDHE_RSA_WITH_NULL_SHA&lt;>&lt;>ECDHE_RSA_NULL_SHA256  </p>
  
  <blockquote>
    <p><strong>Updated (2017/01/31) with additional questions:</strong></p>
  </blockquote>
  
  <p><strong>com.ibm.mq.jar</strong>  </p>
  
  <pre><code>Specification-Version: 7.1.0.1  
  Specification-Vendor: IBM Corporation  
  Implementation-Title: WebSphere MQ classes for Java  
  Implementation-Version: 7.1.0.1 - k710-001-120424  
  </code></pre>
  
  <p><strong>com.ibm.mq.jmqi.jar</strong>  </p>
  
  <pre><code>Specification-Version: 7.1.0.1  
  Specification-Vendor: IBM Corporation  
  Implementation-Title: WebSphere MQ Interface for Java  
  Implementation-Version: 7.1.0.1 - k710-001-120424  
  </code></pre>
  
  <blockquote>
    <p><strong>Updated (2017/01/31 A) with additional questions:</strong></p>
  </blockquote>
  
  <p>Since MQ and Client Running in same machine ,got <strong>Specification-Version: 7.1.0.7</strong> jars<br>
  <strong>Testing done with 2 scenarios</strong>  by changing the classpath</p>
  
  <ol>
  <li><strong>Without</strong> <code>-Dcom.ibm.mq.cfg.useIBMCipherMappings=false</code></li>
  </ol>
  
  <p><code>jdk1.7.0_21/bin/java -Dcom.ibm.mq.cfg.preferTLS=true -classpath .:/opt/mqm/java/lib/com.ibm.mq.jmqi.jar:/opt/mqm/java/lib/com.ibm.mq.jar MQProducerSSL</code> </p>
  
  <p>got exception <code>MQJE001: Completion Code '2', Reason '2400'</code></p>
  
  <ol start="2">
  <li><strong>With</strong> <code>-Dcom.ibm.mq.cfg.useIBMCipherMappings=false</code> </li>
  </ol>
  
  <p><code>/apps/hostlink/java/jdk1.7.0_21/jdk1.7.0_21/bin/java -Dcom.ibm.mq.cfg.preferTLS=true -Dcom.ibm.mq.cfg.useIBMCipherMappings=true -classpath .:/opt/mqm/java/lib/com.ibm.mq.jmqi.jar:/opt/mqm/java/lib/com.ibm.mq.jar MQProducerSSL</code></p>
  
  <p>got exception <code>MQJE001: Completion Code '2', Reason '2393'</code>  </p>
  
  <pre><code>com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2393'.  
  at com.ibm.mq.MQManagedConnectionJ11.&lt;init&gt;(MQManagedConnectionJ11.java:232)  
  at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:553)  
  at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:593)  
  at com.ibm.mq.StoredManagedConnection.&lt;init&gt;(StoredManagedConnection.java:96)  
  at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:198)  
  at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:893)  
  at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:780)  
  at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:729)  
  at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:177)  
  at com.ibm.mq.MQQueueManager.&lt;init&gt;(MQQueueManager.java:674)  
  at MQProducerSSL.main(MQProducerSSL.java:89)  
  Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2393;AMQ9204: Connection to host 'localhost(2017)' rejected. [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2393;AMQ9771: SSL handshake failed. [1=java.lang.IllegalArgumentException[Cannot support TLS_RSA_WITH_AES_256_CBC_SHA256 with currently installed providers],3=localhost/127.0.0.1:2017 (localhost),4=SSLSocket.createSocket,5=default]],3=localhost(2017),5=RemoteTCPConnection.makeSocketSecure]  
  </code></pre>
  
  <blockquote>
    <p><strong>Updated (2017/01/31 B) with additional questions:</strong>  </p>
  </blockquote>
  
  <pre><code>MQEnvironment.sslFipsRequired = false;  
  MQEnvironment.sslCipherSuite = "TLS_RSA_WITH_AES_128_CBC_SHA256";  
  ALTER CHANNEL(TEST.CH) CHLTYPE(SVRCONN) SSLCIPH(TLS_RSA_WITH_AES_128_CBC_SHA256)  
  /apps/hostlink/java/jdk1.7.0_21/jdk1.7.0_21/bin/java -Dcom.ibm.mq.cfg.preferTLS=true -Dcom.ibm.mq.cfg.useIBMCipherMappings=false -classpath .:/opt/mqm/java/lib/com.ibm.mq.jmqi.jar:/opt/mqm/java/lib/com.ibm.mq.jar MQProducerSSL
  </code></pre>
  
  <p><strong>MQJE001: Completion Code '2', Reason '2397'.</strong></p>
  
  <pre><code>MQJE001: Completion Code '2', Reason '2397'.
  com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2397'.
          at com.ibm.mq.MQManagedConnectionJ11.&lt;init&gt;(MQManagedConnectionJ11.java:232)
          at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:553)
          at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:593)
          at com.ibm.mq.StoredManagedConnection.&lt;init&gt;(StoredManagedConnection.java:96)
          at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:198)
          at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:893)
          at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:780)
          at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:729)
          at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:177)
          at com.ibm.mq.MQQueueManager.&lt;init&gt;(MQQueueManager.java:674)
          at MQProducerSSL.main(MQProducerSSL.java:89)
  </code></pre>
  
  <p><strong>Worked below TLSv1</strong></p>
  
  <p>----Spec---- <code>TLS_RSA_WITH_DES_CBC_SHA</code><br>
  ---Suite---- <code>SSL_RSA_WITH_DES_CBC_SHA</code>
  TLSv1   TRUE  </p>
  
  <pre><code>Not working , when given below parameters , throwing **MQJE001: Completion Code '2', Reason '2400'** 
  
  -Dcom.ibm.mq.cfg.useIBMCipherMappings=false  
  -Dcom.ibm.mq.cfg.preferTLS=true
  </code></pre>
  
  <p>doubt on TLSv1 , if TLSv1 working without above parameters , why need to provide -Dcom.ibm.mq.cfg.preferTLS=true for TLSv2?</p>
  
  <p>even with IBM-JDK 7.1 also TLSv2 not working, what could be issue?<br>
  Need to try with MQ8?</p>
  
  <blockquote>
    <p><strong>Updated (2017/02/01) with additional questions:</strong></p>
  </blockquote>
  
  <p><strong>Complete Exception in console</strong></p>
  
  <pre><code>MQJE001: Completion Code '2', Reason '2397'.
  com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2397'.
          at com.ibm.mq.MQManagedConnectionJ11.&lt;init&gt;(MQManagedConnectionJ11.java:232)
          at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:553)
          at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:593)
          at com.ibm.mq.StoredManagedConnection.&lt;init&gt;(StoredManagedConnection.java:96)
          at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:198)
          at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:893)
          at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:780)
          at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:729)
          at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:177)
          at com.ibm.mq.MQQueueManager.&lt;init&gt;(MQQueueManager.java:674)
          at MQProducerSSL.main(MQProducerSSL.java:89)
  Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2397;AMQ9204: Connection to host 'localhost(2017)' rejected. [1=com.ibm.mq.jmqi.JmqiException[CC=2;RC=2397;AMQ9771: SSL handshake failed. [1=javax.net.ssl.SSLHandshakeException[Error signing certificate verify],3=localhost/127.0.0.1:2017 (localhost),4=SSLSocket.startHandshake,5=default]],3=localhost(2017),5=RemoteTCPConnection.protocolConnect]
          at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:2098)
          at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1347)
          at com.ibm.mq.MQSESSION.MQCONNX_j(MQSESSION.java:924)
          at com.ibm.mq.MQManagedConnectionJ11.&lt;init&gt;(MQManagedConnectionJ11.java:221)
          ... 10 more
  Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2397;AMQ9771: SSL handshake failed. [1=javax.net.ssl.SSLHandshakeException[Error signing certificate verify],3=localhost/127.0.0.1:2017 (localhost),4=SSLSocket.startHandshake,5=default]
          at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection.protocolConnect(RemoteTCPConnection.java:1310)
          at com.ibm.mq.jmqi.remote.impl.RemoteConnection.connect(RemoteConnection.java:714)
          at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSessionFromNewConnection(RemoteConnectionSpecification.java:356)
          at com.ibm.mq.jmqi.remote.impl.RemoteConnectionSpecification.getSession(RemoteConnectionSpecification.java:265)
          at com.ibm.mq.jmqi.remote.impl.RemoteConnectionPool.getSession(RemoteConnectionPool.java:144)
          at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1709)
          ... 13 more
  Caused by: javax.net.ssl.SSLHandshakeException: Error signing certificate verify
          at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
          at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886)
          at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
          at sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:987)
          at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:285)
          at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
          at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
          at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016)
          at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
          at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
          at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
          at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection$6.run(RemoteTCPConnection.java:1280)
          at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection$6.run(RemoteTCPConnection.java:1273)
          at java.security.AccessController.doPrivileged(Native Method)
          at com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection.protocolConnect(RemoteTCPConnection.java:1271)
          ... 18 more
  Caused by: java.security.NoSuchAlgorithmException: SHA224withRSA Signature not available
          at java.security.Signature.getInstance(Signature.java:224)
          at sun.security.ssl.JsseJce.getSignature(JsseJce.java:241)
          at sun.security.ssl.HandshakeMessage$CertificateVerify.&lt;init&gt;(HandshakeMessage.java:1552)
          at sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:982)
          ... 29 more
  </code></pre>
  
  <p><strong>from AMQERR01.LOG</strong></p>
  
  <pre><code>----- amqrmrsa.c : 930 --------------------------------------------------------
  01/31/2017 08:45:00 PM - Process(14444.328) User(mqm) Program(amqrmppa)
                      Host(testvm) Installation(Installation1)
                      VRMF(7.1.0.7) QMgr(TLSTEST.QM)
  
  AMQ9665: SSL connection closed by remote end of channel '????'.
  
  EXPLANATION:
  The SSL or TLS connection was closed by the remote host 'localhost (127.0.0.1)'
  during the secure socket handshake. The channel is '????'; in some cases its
  name cannot be determined and so is shown as '????'. The channel did not start.
  ACTION:
  Check the remote end of the channel for SSL and TLS errors. Fix them and
  restart the channel.
  ----- amqccisa.c : 6478 -------------------------------------------------------
  01/31/2017 08:45:00 PM - Process(14444.328) User(mqm) Program(amqrmppa)
                      Host(testvm) Installation(Installation1)
                      VRMF(7.1.0.7) QMgr(TLSTEST.QM)
  
  AMQ9492: The TCP/IP responder program encountered an error.
  
  EXPLANATION:
  The responder program was started but detected an error. 
  
  The host name was 'localhost (127.0.0.1)'; in some cases the host name cannot
  be determined and so is shown as '????'.
  ACTION:
  Look at previous error messages in the error files to determine the error
  encountered by the responder program.
  ----- amqrmrsa.c : 930 --------------------------------------------------------
  </code></pre>
  
  <p><strong>removed old jars from classpath , but still same exception</strong></p>
  
  <p><strong>Console Output have below lines printed for Algorithm</strong></p>
  
  <pre><code>matching alias: ibmwebspheremqtlstest.qm
  *** Certificate chain
  chain [0] = [
  [
    Version: V3
    Signature Algorithm: SHA1withRSA, 
  </code></pre>
  
  <p><em>In client , passing key.jks file , which is created at MQ level with 'runmqckm'<br>
  whether need to specify different Algorithm on creation for TLSv2 ?</em></p>
  
  <blockquote>
    <p>TLSV2 WORKED WITH JDK8  and  ibm/java-x86_64-71</p>
  </blockquote>
  
  <pre><code>SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
  </code></pre>
  
  <p><strong>Oracle JDK8</strong>  </p>
  
  <pre><code>MQEnvironment.sslFipsRequired = false;  
  MQEnvironment.sslCipherSuite = "TLS_RSA_WITH_AES_128_CBC_SHA256";  
  ALTER CHANNEL(TEST.CH) CHLTYPE(SVRCONN) SSLCIPH(TLS_RSA_WITH_AES_128_CBC_SHA256)
  </code></pre>
  
  <p><strong>IBM-JDK 7.1</strong>  </p>
  
  <pre><code>MQEnvironment.sslFipsRequired = false;
  MQEnvironment.sslCipherSuite = "SSL_RSA_WITH_NULL_SHA256";
  ALTER CHANNEL(TEST.CH) CHLTYPE(SVRCONN) SSLCIPH(TLS_RSA_WITH_NULL_SHA256)
  </code></pre>
  
  <p><strong>But question on</strong> how to work any TLSv2 cipher with lesser version of Oracle java than 8? </p>
  
  <p>To resolve/work-around the issue:<strong>will try one by one</strong></p>
  
  <p>1) use the IBM JVM<br>
  2) test with Oracle Java v8<br>
  3) Try MQ v8<br>
  4) other option to set <code>SSLCAUTH=OPTIONAL</code> and not require client side certificate.  </p>
  
  <blockquote>
    <p>Trying with  JDK8  and  MQ8  </p>
  </blockquote>
  
  <p>Now Trying to do the same with JDK8 + MQ8 , MQServer8 and MQSeriesGSKit-8.0.0-4.x86_64 installed , but now issue with creating certificate with runmqckm command</p>
  
  <pre><code>export LD_LIBRARY_PATH=/opt/mqm/gskit8/lib64  
  export PATH=$PATH:/opt/mqm/gskit8/bin  
  runmqckm  
  
  bash: runmqckm: command not found  
  </code></pre>
  
  <p>partially Worked with runmqakm<br>
  But failed to create jks files as below  </p>
  
  <pre><code>runmqakm  -keydb -create  -db /var/mqm/qmgrs/TLSTEST\!QM/ssl/key.jks  -pw password  -type jks  
  CTGSK3017W The database type "jks" is not recognized.  
  </code></pre>
  
  <p><strong>Resolved</strong>  </p>
  
  <p>No Need to set below path  </p>
  
  <pre><code>export LD_LIBRARY_PATH=/opt/mqm/gskit8/lib64  
  export PATH=$PATH:/opt/mqm/gskit8/bin  
  </code></pre>