IBM MQ classes for Java 中的 TLS CipherSpecs 和 CipherSuites
IBM® MQ classes for Java 应用程序与队列管理器建立连接的能力取决于在 MQI 通道的服务器端指定的 CipherSpec 和在客户机端指定的 CipherSuite 。
下表列出了 IBM MQ 及其等效 CipherSuites支持的 CipherSpecs 。
您应该查看主题 已弃用 CipherSpecs ,看看下表中列出的任何 CipherSpecs, 是否已被 IBM MQ 弃用,如果是,则在哪个更新中弃用了 CipherSpec 。
如果应用程序未配置为强制实施 FIPS 140-2 合规性,可以使用标记为符合 FIPS 140-2 标准的 Ciphersuite,但如果为应用程序配置了 FIPS 140-2 合规性(请参阅下面有关配置的注释),那么只有标记为符合 FIPS 140-2 标准的那些 CipherSuite 才能配置;尝试使用其他 CipherSuite 会导致错误。
如需了解CipherSpecs 和 CipherSuites, 符合FIPS 140-2和Suite-B标准的更多信息,请参阅 《指定 CipherSpecs 》。 您可能还需要了解与美国 联邦信息处理标准相关的信息。
为了能够使用 TLS 1.3 密码,运行应用程序的 JRE 必须支持 TLS 1.3。
| CipherSpec 1 | 等效的 CipherSuite (IBM JRE) | 对应的 CipherSuite (Oracle JRE) | 协议 | 是否符合 FIPS 140-2 标准 |
|---|---|---|---|---|
| ECDHE_ECDSA_3DES_EDE_CBC_SHA256 | SSL_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA | TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA | TLS 1.2 | yes |
| ECDHE_ECDSA_AES_128_CBC_SHA256 | SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | TLS 1.2 | yes |
| ECDHE_ECDSA_AES_128_GCM_SHA256 | SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | TLS 1.2 | yes |
| ECDHE_ECDSA_AES_256_CBC_SHA384 | SSL_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 | TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 | TLS 1.2 | yes |
| ECDHE_ECDSA_AES_256_GCM_SHA384 | SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | TLS 1.2 | yes |
| ECDHE_ECDSA_NULL_SHA256 | SSL_ECDHE_ECDSA_WITH_NULL_SHA | TLS_ECDHE_ECDSA_WITH_NULL_SHA | TLS 1.2 | 否 |
| ECDHE_ECDSA_RC4_128_SHA256 | SSL_ECDHE_ECDSA_WITH_RC4_128_SHA | TLS_ECDHE_ECDSA_WITH_RC4_128_SHA | TLS 1.2 | 否 |
| ECDHE_RSA_3DES_EDE_CBC_SHA256 | SSL_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA | TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA | TLS 1.2 | yes |
| ECDHE_RSA_AES_128_CBC_SHA256 | SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | TLS 1.2 | yes |
| ECDHE_RSA_AES_128_GCM_SHA256 | SSL_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | TLS 1.2 | yes |
| ECDHE_RSA_AES_256_CBC_SHA384 | SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA384 | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 | TLS 1.2 | yes |
| ECDHE_RSA_AES_256_GCM_SHA384 | SSL_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | TLS 1.2 | yes |
| ECDHE_RSA_NULL_SHA256 | SSL_ECDHE_RSA_WITH_NULL_SHA | TLS_ECDHE_RSA_WITH_NULL_SHA | TLS 1.2 | 否 |
| ECDHE_RSA_RC4_128_SHA256 | SSL_ECDHE_RSA_WITH_RC4_128_SHA | TLS_ECDHE_RSA_WITH_RC4_128_SHA | TLS 1.2 | 否 |
| TLS_RSA_WITH_3DES_EDE_CBC_SHA 2 | SSL_RSA_WITH_3DES_EDE_CBC_SHA | TLS_RSA_WITH_3DES_EDE_CBC_SHA | TLS 1.0 | 否 4 |
| TLS_RSA_WITH_AES_128_CBC_SHA | SSL_RSA_WITH_AES_128_CBC_SHA | TLS_RSA_WITH_AES_128_CBC_SHA | TLS 1.0 | 否 4 |
| TLS_RSA_WITH_AES_128_CBC_SHA256 | SSL_RSA_WITH_AES_128_CBC_SHA256 | TLS_RSA_WITH_AES_128_CBC_SHA256 | TLS 1.2 | 否 4 |
| TLS_RSA_WITH_AES_128_GCM_SHA256 | SSL_RSA_WITH_AES_128_GCM_SHA256 | TLS_RSA_WITH_AES_128_GCM_SHA256 | TLS 1.2 | 否 4 |
| TLS_RSA_WITH_AES_256_CBC_SHA | SSL_RSA_WITH_AES_256_CBC_SHA | TLS_RSA_WITH_AES_256_CBC_SHA | TLS 1.0 | 否 4 |
| TLS_RSA_WITH_AES_256_CBC_SHA256 | SSL_RSA_WITH_AES_256_CBC_SHA256 | TLS_RSA_WITH_AES_256_CBC_SHA256 | TLS 1.2 | 否 4 |
| TLS_RSA_WITH_AES_256_GCM_SHA384 | SSL_RSA_WITH_AES_256_GCM_SHA384 | TLS_RSA_WITH_AES_256_GCM_SHA384 | TLS 1.2 | 否 4 |
| TLS_RSA_WITH_DES_CBC_SHA | SSL_RSA_WITH_DES_CBC_SHA | SSL_RSA_WITH_DES_CBC_SHA | TLS 1.0 | 否 |
| TLS_RSA_WITH_NULL_SHA256 | SSL_RSA_WITH_NULL_SHA256 | TLS_RSA_WITH_NULL_SHA256 | TLS 1.2 | 否 |
| TLS_RSA_WITH_RC4_128_SHA256 | SSL_RSA_WITH_RC4_128_SHA | SSL_RSA_WITH_RC4_128_SHA | TLS 1.2 | 否 |
| ANY_TLS12 | *TLS12 | *TLS12 | TLS 1.2 | yes |
| TLS_AES_128_GCM_SHA256 3 | TLS_AES_128_GCM_SHA256 | TLS_AES_128_GCM_SHA256 | TLS V1.3 | 否 |
| TLS_AES_256_GCM_SHA384 3 | TLS_AES_256_GCM_SHA384 | TLS_AES_256_GCM_SHA384 | TLS V1.3 | 否 |
| TLS_CHACHA20_POLY1305_SHA256 3 | TLS_CHACHA20_POLY1305_SHA256 | TLS_CHACHA20_POLY1305_SHA256 | TLS V1.3 | 否 |
| TLS_AES_128_CCM_SHA256 3 | TLS_AES_128_CCM_SHA256 | TLS_AES_128_CCM_SHA256 | TLS V1.3 | 否 |
| TLS_AES_128_CCM_8_SHA256 3 | TLS_AES_128_CCM_8_SHA256 | TLS_AES_128_CCM_8_SHA256 | TLS V1.3 | 否 |
| ANY 3 | *ANY | *ANY | 多个 | 否 |
| ANY_TLS13 3 | *TLS13 | *TLS13 | TLS V13 | 否 |
| ANY_TLS12_OR_HIGHER 3 | *TLS12ORHIGHER | *TLS12ORHIGHER | TLS 1.2 及更高版本 | 否 |
| ANY_TLS13_OR_HIGHER 3 | *TLS13ORHIGHER | *TLS13ORHIGHER | TLS 1.3 及更高版本 | 否 |
- 这是在 IBM MQ中的通道上配置的值,包括在 CCDT (二进制或 JSON) 中。
不推荐 CipherSpec TLS_RSA_WITH_3DES_EDE_CBC_SHA。 但是,它仍可用于传输最多 32 GB 数据,超过此数据量之后,连接将因错误 AMQ9288 而终止。 要避免此错误,您需要避免使用三重 DES,或在使用此 CipherSpec 时启用密钥重置。- 要能够使用 TLS v1.3 密码,运行应用程序的 Java runtime environment (JRE) 必须支持 TLS v1.3。
![[MQ 9.3.5.1 2024 年 4 月]](../ng9351.gif)
从 IBM MQ 9.3.5 CSU 1 和 IBM MQ 9.3.0 CSU 17 起, IBM Java 8 JRE 在 FIPS 模式下运行时不再支持 RSA 密钥交换。
在 IBM MQ classes for Java 应用程序中配置密码套件和 FIPS 合规性
- 使用 IBM MQ classes for Java 的应用程序可以使用以下两种方法之一来设置连接的 CipherSuite :
- 将 MQEnvironment 类中的 sslCipherSuite 字段设置为 CipherSuite 名称。
- 将传递到 MQQueueManager 构造函数的属性哈希表中的属性 CMQC.SSL_CIPHER_SUITE_PROPERTY 设置为 CipherSuite 名称。
- 使用 IBM MQ classes for Java 的应用程序可以使用以下两种方法之一来强制实施 FIPS 140-2 合规性:
- 将 MQEnvironment 类中的 sslFipsRequired 字段设置为 True。
- 将传递到 MQQueueManager 构造函数的属性哈希表中的属性 CMQC.SSL_FIPS_REQUIRED_PROPERTY 设置为 True。
配置应用程序以使用 IBM Java 或 Oracle Java CipherSuite 映射
对于 Continuous Delivery from IBM MQ 9.3.3 ,产品中删除了 Java 系统属性 com.ibm.mq.cfg.useIBMCipherMappings ,该属性控制使用哪些映射。 从 IBM MQ 9.3.3开始,可以将密码定义为 CipherSpec 或 CipherSuite 名称,并由 IBM MQ正确处理。 如果 IBM MQ classes for Java 应用程序创建到队列管理器的安全 TLS 连接,那么需要以下三个 Jackson JAR 文件:- jackson-annotations.jar
- jackson-core.jar
- jackson-databind.jar
com.ibm.mq.cfg.useIBMCipherMappings 的以下信息仅适用于 IBM MQ 9.3.3 之前的 Long Term Support 和 Continuous Delivery 。com.ibm.mq.cfg.useIBMCipherMappings 控制使用哪些映射。 该属性可以具有以下某个值:- true
- 使用 IBM Java CipherSuite 到 IBM MQ CipherSpec 映射。
- false
- 使用 Oracle CipherSuite 到 IBM MQ CipherSpec 映射。
有关使用的更多信息 IBM MQJava 和 TLS 密码,请参阅 MQdev 博客文章 MQJava、TLS 密码、非 IBM JRE 和 APAR IT06775、 IV66840、 IT09423、 IT10837。
互操作性限制
某些CipherSuites可能与多个 IBM MQ CipherSpec,兼容,具体取决于所使用的协议。 但是,仅支持使用表1中指定的TLS版本CipherSuite/CipherSpec。 尝试使用不支持的 CipherSuite 和 CipherSpec 组合会导致失败,并出现相应异常。 使用任何这些 CipherSuite/CipherSpec 组合的安装都应转为使用支持的组合。
下表显示了受此限制影响的 CipherSuite。
| CipherSuite | 支持的 TLS CipherSpec | 不支持的 SSL CipherSpec |
|---|---|---|
| SSL_RSA_WITH_3DES_EDE_CBC_SHA | TLS_RSA_WITH_3DES_EDE_CBC_SHA 1 | TRIPLE_DES_SHA_US |
| SSL_RSA_WITH_DES_CBC_SHA | TLS_RSA_WITH_DES_CBC_SHA | DES_SHA_EXPORT |
| SSL_RSA_WITH_RC4_128_SHA | TLS_RSA_WITH_RC4_128_SHA256 | RC4_SHA_US |
不推荐此 CipherSpec TLS_RSA_WITH_3DES_EDE_CBC_SHA。 但是,它仍可用于传输最多 32 GB 数据,超过此数据量之后,连接将因错误 AMQ9288 而终止。 要避免此错误,您需要避免使用三重 DES,或在使用此 CipherSpec 时启用密钥重置。