IBM Support

Collection of articles regarding IBM MQ SSL and IBM MQ TLS

Question & Answer


Question

Collection of articles regarding IBM MQ SSL and IBM MQ TLS

Answer

This document provides a compilation of articles regarding:
-- IBM MQ SSL (Secure Sockets Layer)
-- IBM MQ TLS (Transport Layer Security)
++ Table of Contents
- Background
- Cipherspecs
- Certificates
- Client applications connecting to queue manager
- Connecting two queue managers
- Troubleshooting
- IBM MQ Appliance
- IBM MQ Web Console
- Connection WAS MQ JMS/RA to Queue Manager
- GSKit
- Old references
 
++ Background
https://www.mqtechconference.com/sessions_v2015/MQTC_v2015-SSL-TLS_Using_and_Managing_Certificates.pdf
Presentation: SSL Certificate Management or What in the heck am I getting myself into!
++ Cipherspecs
https://www.ibm.com/support/pages/node/6453421
TLS Cipher Specification Order Changed in IBM MQ 9.2
https://www.ibm.com/docs/en/ibm-mq/9.3?topic=cipherspecs-deprecated
IBM MQ / 9.3
Deprecated CipherSpecs
Note: 
In Table 1, the RIGHT-MOST column is titled "Updated when deprecated" which lists the version.release.level of MQ.
If you do not see this column, then scroll down to the bottom of the table, then you will see a horizontal scroll bar and use it to show the right side of the table.
++ Certificates
https://www.ibm.com/support/pages/node/6445805
IBM MQ Personal and CA Certificates Explained And How To Identify Them.
How to identify a queue manager's personal certificate or Certificate Authority (CA) certificate, and what is the difference between them?
What is a Digital Certificate?
What is a Certificate Authority (CA) Public Certificate?
How do I know if a Queue Manager's Keystore contains a personal certificate?
This can be done in two ways, through the command line with runmqakm or runmqckm, and through the iKeyman GUI interface.
https://www.ibm.com/support/pages/node/6382940
How to perform common tasks for the management of IBM MQ certificates
How to check a certificate expiration?     
How to list the content of a MQ keystore?     
How to view the content of a certificate?     
How to (process) create a certificate signing request (CSR) and to receive a CA signed personal certificate?
How to renew an existing certificate before it expires?
How to rename a certificate?
How to export and import a personal certificate?
How to check/verify that you have a personal certificate for your queue manager or client?    
How to tell if the certificate has OCSP/CRL validation?
How to combine public certifcate and private key into PKCS12 file 

 
https://www.ibm.com/support/pages/node/6563547
Creating Certificate Chain using IBM MQ runmqckm (GSKit)
The purpose of this document is to provide detailed instructions to create a Certificate Chain using the IBM MQ runmqckm command (supplied by the MQ GSKit component).  
The Certificate Chain will consist of:
  one root certificate, 
  one intermediate certificate and 
  one personal certificate.
Creating Multiple Intermediate Certificate Chain using IBM MQ runmqakm (GSKit)
The purpose of this document is to provide instructions to create a Certificate Chain using the IBM MQ runmqakm command (supplied by the IBM MQ GSKit component).
The Certificate Chain will consist of:
  one root certificate, 
  two intermediate certificates and 
  one personal certificate. 
https://www.ibm.com/support/pages/node/6217603
IBM MQ Certificate Authority Chain Information
What Is a Certificate Chain
What Certificates Are in a Certificate Chain
Root Certificate
Intermediate Certificates
Personal Certificates
Certificate Chain
Testing Certificate Chains
  IBM MQ Key Management Tool
  runmqakm/runmqckm Tool
  mqcertck Tool

 
https://www.ibm.com/support/pages/node/6988377
Is there an installation package for Windows with only IBM MQ tools to handle certificates: GUI strmqikm (iKeyman), and line commands runmqckm (iKeycmd) and runmqakm (GSKCapiCmd)
Short answer: NO. The GSK utilities strmqikm (iKeyman), runmqckm (iKeycmd) and runmqakm (GSKCapiCmd) are NOT provided in a separate installation package from IBM.
++ Client applications connecting to queue manager
https://www.ibm.com/support/pages/node/6470619
Using SSL TLS in MQ 9.2 to connect a C-based client in Windows to a queue manager in Linux, using self-signed certificates, 2-way authentication
The MQ sample amqssslc is used for testing, because it does not require a CCDT.
For illustration purposes the following protocol will be used:
   TLS 1.3 compliant: TLS_AES_128_GCM_SHA256
+ These are the steps for 2-way authentication that are explained in this tutorial:
Step 1: Client (Windows): Create SSL client key database (CMS)
Step 2: Client (Windows): Create certificate
Step 3: Client (Windows): Extract the public SSL client certificate
Step 4: Client (Windows): Copy Windows certificate to the SSL server side in Linux Copy/transfer the public/signer SSL certificate administrator.crt in ASCII mode from the Windows host to the Linux host.
Step 5: Server (Linux): Create SSL server key database
Step 6: Server (Linux): Create certificate
Step 7: Server (Linux): Extract the public SSL server certificate
Step 8: Server (Linux): Copy Linux certificate to the SSL client side in Windows Copy/transfer the public/signer SSL certificate QM92TLS.crt in ASCII mode from the Linux  host to the Windows host.
Step 9: Server (Linux): Add the Windows certificate to Linux key database
Step 10: Server (Linux): Run MQSC commands for SSL server side queue manager
Step 11: Client (Windows): Add the Linux certificate to the Windows key database
Step 12: Using sample amqssslc to test the sending of a message from Client (Windows) to Server (Linux)
Step 13: (Optional) Using CCDT file in JSON format and sample amqsputc to test the sending of a message from Client (Windows) to Server (Linux)
Using SSL TLS in MQ 9.3 to connect a JMS client to a queue manager in Linux, using self-signed certificates, 2-way authentication
The Java GitHub sample SSLSampleJMS.java is used for testing, because it does not require a CCDT.
For illustration purposes the following protocol will be used:
   TLS 1.3 compliant: TLS_AES_128_GCM_SHA256
You can download the following zip or tar.gz file:
Windows: SSLSampleJMS.zip
Linux:   SSLSampleJMS.tar.gz
The zip / tar.gz files include the modified source code (the "package" statement was commented out) and the compiled class file of the modified code:
   SSLSampleJMS.java
   SSLSampleJMS.class
https://www.ibm.com/support/pages/node/7118737
Summary of IBM MQ SSL TLS commands to connect clients and queue managers, using self-signed certificates, 2-way authentication
For illustration purposes the following protocol will be used:
TLS 1.3 compliant: TLS_AES_128_GCM_SHA256
These are the chapters:
Chapter 1: Using SSL TLS in MQ 9.2 to connect a C-based client in Windows to a queue manager in Linux, using self-signed certificates, 2-way authentication
Chapter 2: Using SSL TLS in MQ 9.3 to connect a JMS client to a queue manager in Linux, using self-signed certificates, 2-way authentication
Chapter 3: Using SSL TLS to connect an IBM MQ 9.3 queue manager in Windows with another one in Linux, using self-signed certificates
https://www.ibm.com/support/pages/node/6955535
Using a CCDT in JSON with SSL/TLS with the IBM MQ sample amqsputc
For illustration purposes the following protocol will be used:
   TLS 1.3 compliant: TLS_AES_128_GCM_SHA256
https://www.ibm.com/support/pages/node/6955621
Using a CCDT in JSON with SSL/TLS with an IBM MQ client using Python PyMQI Included sample: simple-mqput.py
https://www.ibm.com/support/pages/node/6983869
IBM MQ C-Based sample amqssslc and Java GitHub sample SSLSampleJMS.java (TLS)
You would like to get more information on how to use MQ API to specify the SSL TLS cipher for an IBM MQ Client application that uses SSL/TLS.
There are 2 samples that provide the details for using the MQ API to specify the SSL TLS cipher:
1: Sample for C-based API applications: amqssslc 
2: Sample for JMS: SSLSampleJMS.java

https://www.ibm.com/support/pages/node/6568807
Using IBM MQ CCDT file in JSON format
This feature was introduced in MQ 9.1.2 CD and it is available in MQ 9.2 LTS and CD.
There are several examples and the complete JSON file for each of the examples is included.
- Example 1: Very simple CCDT file: 1 channel, 1 queue manager, no SSL/TLS
- Example 2: CCDT file for 1 channel, 1 queue manager using SSL/TLS.
- Example 3: CCDT for 1 multi-instance queue manager, no SSL/TLS
https://www.ibm.com/support/pages/node/613881
Using SSL to connect MQ Explorer and MQ java clients to a queue manager in WebSphere MQ 7.1/7.5
Getting mqlight to work with node.js samples with an IBM MQ AMQP channel, first without TLS and then with TLS
++ Connecting two queue managers
https://www.youtube.com/watch?v=MWJb1sQ9um0
Zero to SSL in under 5 minutes (IBM MQ)
YouTube video, author T.Rob Wyatt, created on 2015 using IBM MQ 8.0
Starting with a Linux VM and no defined IBM MQ queue managers, it is possible to create two queue managers, define their respective listeners, transmission queues and channel pairs, generate two QMgr certificates, exchange the certificates, start the channels and send messages across, all in under 5 minutes.
Note that this results in mutually authenticated peer-checked SSL channels, which we can run without disabling any of the out-of-the-box security provided by MQ.
https://www.ibm.com/support/pages/node/7121151
Using SSL TLS to connect an IBM MQ 9.3 queue manager in Windows with another one in Linux, using self-signed certificates
The objective of this document is to provide step-by-step details to:
- connect an MQ 9.3 queue manager in Windows
- to a single-instance queue manager running MQ 9.3 in Linux,
- using self-signed certificates (ok for Test queue managers, but not for Production, because no Certification Authority is involved, no root certificates).
- 2-way authentication (each queue manager authenticates the other queue manager).
- using the runmqckm (iKeycmd) from the command line, that is, not using the strmqikm (iKeyman) GUI.
.
The main scenario is to put a message in the remote queue definition in the Windows queue manager QMFINTLS and then the TLS enabled "sender" channel will transfer the message to the TLS enabled "receiver" channel in the Linux queue manager QMSTMTLS.
.
For illustration purposes the following protocol will be used:
TLS 1.3 compliant: TLS_AES_128_GCM_SHA256
https://www.ibm.com/support/pages/node/6986363
Configuring Transport Level Security (TLS) between two MQ Queue Managers
using self-signed certificates
Step by step instructions to configure Transport Layer Security (TLS) between two queue managers using MQ and GSKit commands, the MQ Explorer, and the Keyman GUI.
 
https://www.ibm.com/support/pages/node/6482505
Configuring MQ Channel Encryption Between Two Queue Managers Using Certificate Authority Certificates
++ Troubleshooting
https://www.ibm.com/support/pages/node/597609
IBM MQ and SSL/TLS Demystified Part 1: Troubleshooting MQ Certificate Issues
https://www.ibm.com/support/pages/node/6359069
IBM MQ Troubleshooting Common TLS SSL Errors
https://www.ibm.com/support/pages/node/709225
Troubleshooting IBM MQ Java/JMS TLS SSL Configurations
https://www.ibm.com/support/pages/node/498887
Troubleshooting IBM MQ TLS Channels
https://www.ibm.com/support/pages/node/709801
Generating JSSE TLS trace for IBM MQ Java and JMS applications on Linux, UNIX, Windows and IBM i

 
https://www.ibm.com/support/pages/node/6955529
Exploring some troubleshooting scenarios for SSL/TLS in IBM MQ
The scenarios are:
Scenario 1: CipherSpec specified by the MQ Client does not match the required one
Scenario 2: Label specified by the MQ Client does not match the one from the Client certificate
Scenario 3: Using a TLS 1.2 CipherSpec but the queue manager expects only TLS 1.3
Scenario 4: Specifying suffix (kdb) for keystore, 2381 MQRC_KEY_REPOSITORY_ERROR
Scenario 5: Dealing with an expired client certificate
Scenario 6: MQSERVER does not support SSL/TLS
Scenario 7: The CN=xx in SSLPEER did not match the one in the client certificate
++ IBM MQ Appliance
https://www.ibm.com/support/pages/node/7009177
How to configure SSL TLS for queue managers in IBM MQ Appliance
https://www.ibm.com/support/pages/node/6518668
IBM MQ TLS configuration between IBM MQ Client application and IBM MQ Appliance queue manager using certificate authority certificates
++ IBM MQ Web Console
https://www.ibm.com/support/pages/node/6985659
Configuring a Secure Connection for the IBM MQ Web Console on Linux and Windows Platforms
 
https://www.ibm.com/support/pages/node/6985685
IBM MQ Console: Configuring Transport Level Security (TLS) between two MQ Queue Managers using self-signed certificates
++ Connection WAS MQ JMS/RA to Queue Manager
https://www.ibm.com/support/pages/node/627201
Webcast replay: Using SSL to Connect to a WebSphere Application Server with an IBM MQ Queue Manager (MP3 Audio and PDF)
This webcast reply focuses on how to configure the use of Secured Sockets Layer (SSL) to connect a WebSphere Application Server with an IBM MQ queue manager.
Level of Difficulty: Intermediate
https://www.ibm.com/support/pages/node/627175
(Tutorial) Using SSL to Connect to a WebSphere Application Server with a IBM MQ Queue Manager
Abstract:
The objective of this technical document is to describe in detail how to configure the connection between a WebSphere Application Server V7 with a IBM MQ Queue Manager V7 using Secured Sockets Layer (SSL).
The focus of this techdoc is to provide the steps and the commands that you need to perform to configure the secured connection, and using self-signed certificates which you can generate for your testing.
The target platforms are these distributed ones: Unix and Windows.
It is not the intention of this document to provide the background and the explanation of what is SSL. Also, this document does not cover advanced features, such as certificate revocation lists or Online Certificate Status Protocol (OCSP), nor other platforms (z/OS, Open VMS, etc).
It is recommended that you perform the tasks in 2 phases because it is easier to narrow down the scope of the problem determination tasks in case that there are problems:
Phase 1) Connect your MDB in WAS using a non-SSL connection with the MQ queue manager.
Phase 2) Once the MDB is able to receive messages successfully, then you can configure the connection to add SSL.
++ GSKit
https://www.ibm.com/support/pages/node/7039406
IBM MQ reports AMQ9620E error on call to gsk_secure_soc_init with error code '9' or '12'
AMQ9620E: Internal error on call to SSL function on channel '????' to host
https://www.ibm.com/support/pages/node/6415135
Why the MQ file gskssl64.tar.gz (and others) was not unpackaged/removed by rpm in Linux after the installation was completed?

 
https://www.ibm.com/support/pages/node/196171
MQ 7.1 and later: packaging changes and renamed commands for GSKit and SSL Support
MQ V7.0 command      MQ 7.1 or later      Purpose
gsk7cmd              runmqckm             iKeycmd command-line tool
gsk7ikm              strmqikm             iKeyman GUI tool
gsk7capicmd          runmqakm             non-Java tool
gsk7cmd,gsk7ver      dspmqver -p 64       display version
gsk8ver              dspmqver -p 64       display version
++ Old References
The following is an old Redbook, which is mentioned here for completeness.
https://www.redbooks.ibm.com/abstracts/sg248069.html
Secure Messaging Scenarios with WebSphere MQ, 
Updated 02 April 2013 (WebSphere MQ 7.5)
++ Additional information:
tags: "MQ SSL"; "MQ TLS"; MQSSL; MQTLS; GSKit
+++ end +++

[{"Line of Business":{"code":"LOB67","label":"IT Automation \u0026 App Modernization"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"ARM Category":[{"code":"a8m0z00000008MzAAI","label":"Security"}],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions","Type":"MASTER"}]

Document Information

Modified date:
15 March 2024

UID

ibm17060537