Enabling CipherSpecs
Enable a CipherSpec by using the SSLCIPH parameter in either the DEFINE CHANNEL MQSC command or the ALTER CHANNEL MQSC command.
IBM Crypto for Ccryptographic module. The certificate for this module has been moved to the Historical status. Customers should view the IBM Crypto for C certificate and be aware of any advice provided by NIST. A replacement FIPS 140-3 module is currently in progress and its status can be viewed by searching for it in the NIST CMVP modules in process list.
Some of the CipherSpecs that you can use with IBM MQ are FIPS compliant. Some of the FIPS compliant CipherSpecs are also Suite B compliant although others, such as TLS_RSA_WITH_AES_256_CBC_SHA, are not.
All Suite B compliant CipherSpecs are also FIPS compliant. All Suite B compliant CipherSpecs fall
into two groups: 128 bit (for example, ECDHE_ECDSA_AES_128_GCM_SHA256
) and 192 bit
(for example, ECDHE_ECDSA_AES_256_GCM_SHA384
),
The following diagram illustrates the relationship between these subsets:
From IBM MQ 8.0.0 Fix Pack 3 the number of supported CipherSpecs has been reduced.
For information about enabling the deprecated CipherSpecs, see Enabling deprecated CipherSpecs on Multiplatforms or Enabling deprecated CipherSpecs on z/OS. For a list of CipherSpecs that you can re-enable to use with IBM MQ, see Deprecated CipherSpecs.
Cipher specifications that you can use with the IBM MQ queue manager automatically are listed in the following table. When you request a personal certificate, you specify a key size for the public and private key pair. The key size that is used during the TLS handshake is the size stored in the certificate unless it is determined by the CipherSpec, as noted in the table.
Platform support 1 | CipherSpec name | Protocol used | MAC algorithm | Encryption algorithm | Encryption bits | FIPS 2 | Suite B |
---|---|---|---|---|---|---|---|
TLS_RSA_WITH_AES_128_CBC_SHA
|
TLS 1.0 | SHA-1 | AES | 128 | Yes | No | |
TLS_RSA_WITH_AES_256_CBC_SHA
3 |
TLS 1.0 | SHA-1 | AES | 256 | Yes | No | |
All | ECDHE_ECDSA_AES_128_CBC_SHA256
|
TLS 1.2 | SHA-256 | AES | 128 | Yes | No |
All | ECDHE_ECDSA_AES_256_CBC_SHA384
3 |
TLS 1.2 | SHA-384 | AES | 256 | Yes | No |
ECDHE_ECDSA_AES_128_GCM_SHA256
4
|
TLS 1.2 | AEAD AES-128 GCM | AES | 128 | Yes | 128 bit | |
ECDHE_ECDSA_AES_256_GCM_SHA384 3
4 |
TLS 1.2 | AEAD AES-128 GCM | AES | 256 | Yes | 192 bit | |
All | ECDHE_RSA_AES_128_CBC_SHA256
|
TLS 1.2 | SHA-256 | AES | 128 | Yes | No |
All | ECDHE_RSA_AES_256_CBC_SHA384
3
|
TLS 1.2 | SHA-384 | AES | 256 | Yes | No |
(LTS) All (V9.0.5 and later) |
ECDHE_RSA_AES_128_GCM_SHA256
4 |
TLS 1.2 | AEAD AES-128 GCM | AES | 128 | Yes | No |
(LTS) All (V9.0.5 and later) |
ECDHE_RSA_AES_256_GCM_SHA384
3
4 |
TLS 1.2 | AEAD AES-128 GCM | AES | SHA384 | Yes | No |
5 | ECDHE_ECDSA_RC4_128_SHA256
|
TLS 1.2 | AEAD AES-128 GCM | AES | SHA256 | Yes | No |
ECDHE_ECDSA_3DES_EDE_CBC_SHA256
|
TLS 1.2 | AEAD AES-128 GCM | 3DES | SHA256 | Yes | No | |
ECDHE_ECDSA_NULL_SHA256
|
TLS 1.2 | AEAD AES-128 GCM | ECDSA | SHA256 | Yes | No | |
ECDHE_ECDSA_AES_256_GCM_SHA384
3
4 |
TLS 1.2 | AEAD AES-128 GCM | AES | SHA384 | Yes | No | |
TLS_RSA_WITH_AES_128_CBC_SHA256
|
TLS 1.2 | SHA-256 | AES | 128 | Yes | No | |
TLS_RSA_WITH_AES_256_CBC_SHA256
3 |
TLS 1.2 | SHA-256 | AES | 256 | Yes | No | |
All (V9.0.5 and later and 9.0 LTS) | TLS_RSA_WITH_AES_128_GCM_SHA256
4
|
TLS 1.2 | AEAD AES-128 GCM | AES | 128 | Yes | No |
All (V9.0.5 and later and 9.0 LTS) | TLS_RSA_WITH_AES_256_GCM_SHA384
3
4 |
TLS 1.2 | AEAD AES-128 GCM | AES | 256 | Yes | No |
Notes:
|
Enabling deprecated CipherSpecs on Multiplatforms
By default, you are not allowed to specify a deprecated CipherSpec on a channel definition. If you attempt to specify a deprecated CipherSpec on Multiplatforms, you receive message AMQ8242: SSLCIPH definition wrong, and PCF returns MQRCCF_SSL_CIPHER_SPEC_ERROR.
You cannot start a channel with a deprecated CipherSpec. If you attempt to do so with a deprecated CipherSpec, the system returns MQCC_FAILED (2), together with a Reason of MQRC_SSL_INITIALIZATION_ERROR (2393) to the client.
It is possible for you to re-enable one or more of the deprecated CipherSpecs for defining channels, at runtime on the server, by setting the environment variable AMQ_SSL_WEAK_CIPHER_ENABLE.
- A single CipherSpec name, or
- A comma separated list of IBM MQ CipherSpec names to re-enable, or
- The special value of ALL, representing all CipherSpecs.
AMQ_SSL_WEAK_CIPHER_ENABLE=ECDHE_RSA_RC4_128_SHA256
or,
alternatively change the SSL stanza in the qm.ini file, by setting:
SSL
AllowWeakCipherSpec=ECDHE_RSA_RC4_128_SHA256
In addition to issuing
AMQ_SSL_WEAK_CIPHER_ENABLE
, or AllowWeakCipherSpec
, as described
in the preceding text, you must set the environment variable AMQ_SSL_V3_ENABLE=1
or
set AllowSSLV3=Y
, to continue using deprecated SSLv3 CipherSpecs, as described in
Deprecation: SSLv3 protocol.
AMQ_SSL_V3_ENABLE=1
AMQ_SSL_WEAK_CIPHER_ENABLE=RC4_MD5_US
or,
alternatively, change the SSL stanza in the qm.ini file, by setting:
SSL
AllowSSLV3=Y
AllowWeakCipherSpec=RC4_MD5_US
In addition to issuing AMQ_TLS_WEAK_CIPHER_ENABLE
, or
AllowWeakCipherSpec
, you must set the environment variable
AMQ_TLS_V1_ENABLE=1
or set AllowTLSV1=Y
, to continue using
deprecated TLSv1 CipherSpecs.
AMQ_TLS_V1_ENABLE=1
AMQ_TLS_WEAK_CIPHER_ENABLE=TLS_RSA_WITH_AES_128_CBC_SHA
or, alternatively, change the SSL stanza in the qm.ini file, by setting:
SSL
AllowTLSV1=Y
AllowWeakCipherSpec=TLS_RSA_WITH_AES_128_CBC_SHA
Enabling deprecated CipherSpecs on z/OS
By default, you are not allowed to specify a deprecated CipherSpec on a channel definition. If you attempt to specify a deprecated CipherSpec on z/OS, you receive message CSQM102E or message CSQX674E.
JCL: //CSQXWEAK DD DUMMY
JCL: //CSQXSSL3 DD DUMMY
JCL: //TLS10OFF DD DUMMY
JCL: //WCIPSOFF DD DUMMY
JCL: //GSKDCIPS DD DUMMY