IBM MQ classes for Java 中的 TLS CipherSpecs 和 CipherSuites
IBM® MQ classes for Java 应用程序能否与队列管理器建立连接,取决于 MQI 通道服务器端指定的 CipherSpec 和客户端指定的 CipherSuite。
下表列出了 IBM MQ 支持的 CipherSpecs 及其对应的 CipherSuites。
您应查看主题 "已废弃的 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。 您可能还需要了解与美国联邦信息处理标准有关的信息。
要使用完整的 CipherSuite 集,并使用经过认证的 FIPS 140-2 和/或 Suite-B 合规性进行操作,需要一个合适的 JRE。 IBM Java 7 Service Refresh 4 Fix Pack 2 或更高级别的 JRE 提供适当的支持。 IBM
| CipherSpec | 等效 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 | TLSv1.2 | yes |
| ECDHE_ECDSA_AES_128_CBC_SHA256 | SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | TLSv1.2 | yes |
| ECDHE_ECDSA_AES_128_GCM_SHA256 | SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | TLSv1.2 | yes |
| ECDHE_ECDSA_AES_256_CBC_SHA384 | SSL_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 | TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 | TLSv1.2 | yes |
| ECDHE_ECDSA_AES_256_GCM_SHA384 | SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | TLSv1.2 | yes |
| ECDHE_ECDSA_NULL_SHA256 | SSL_ECDHE_ECDSA_WITH_NULL_SHA | TLS_ECDHE_ECDSA_WITH_NULL_SHA | TLSv1.2 | False |
| ECDHE_ECDSA_RC4_128_SHA256 | SSL_ECDHE_ECDSA_WITH_RC4_128_SHA | TLS_ECDHE_ECDSA_WITH_RC4_128_SHA | TLSv1.2 | False |
| ECDHE_RSA_3DES_EDE_CBC_SHA256 | SSL_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA | TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA | TLSv1.2 | yes |
| ECDHE_RSA_AES_128_CBC_SHA256 | SSL_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | TLSv1.2 | yes |
| ECDHE_RSA_AES_128_GCM_SHA256 | SSL_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | TLSv1.2 | yes |
| ECDHE_RSA_AES_256_CBC_SHA384 | SSL_ECDHE_RSA_WITH_AES_256_CBC_SHA384 | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 | TLSv1.2 | yes |
| ECDHE_RSA_AES_256_GCM_SHA384 | SSL_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | TLSv1.2 | yes |
| ECDHE_RSA_NULL_SHA256 | SSL_ECDHE_RSA_WITH_NULL_SHA | TLS_ECDHE_RSA_WITH_NULL_SHA | TLSv1.2 | False |
| ECDHE_RSA_RC4_128_SHA256 | SSL_ECDHE_RSA_WITH_RC4_128_SHA | TLS_ECDHE_RSA_WITH_RC4_128_SHA | TLSv1.2 | False |
| TLS_RSA_WITH_3DES_EDE_CBC_SHA 1 | SSL_RSA_WITH_3DES_EDE_CBC_SHA | TLS_RSA_WITH_3DES_EDE_CBC_SHA | TLSv1 | 无 2 |
| TLS_RSA_WITH_AES_128_CBC_SHA | SSL_RSA_WITH_AES_128_CBC_SHA | TLS_RSA_WITH_AES_128_CBC_SHA | TLSv1 | 无 2 |
| TLS_RSA_WITH_AES_128_CBC_SHA256 | SSL_RSA_WITH_AES_128_CBC_SHA256 | TLS_RSA_WITH_AES_128_CBC_SHA256 | TLSv1.2 | 无 2 |
| TLS_RSA_WITH_AES_128_GCM_SHA256 | SSL_RSA_WITH_AES_128_GCM_SHA256 | TLS_RSA_WITH_AES_128_GCM_SHA256 | TLSv1.2 | 无 2 |
| TLS_RSA_WITH_AES_256_CBC_SHA | SSL_RSA_WITH_AES_256_CBC_SHA | TLS_RSA_WITH_AES_256_CBC_SHA | TLSv1 | 无 2 |
| TLS_RSA_WITH_AES_256_CBC_SHA256 | SSL_RSA_WITH_AES_256_CBC_SHA256 | TLS_RSA_WITH_AES_256_CBC_SHA256 | TLSv1.2 | 无 2 |
| TLS_RSA_WITH_AES_256_GCM_SHA384 | SSL_RSA_WITH_AES_256_GCM_SHA384 | TLS_RSA_WITH_AES_256_GCM_SHA384 | TLSv1.2 | 无 2 |
| TLS_RSA_WITH_DES_CBC_SHA | SSL_RSA_WITH_DES_CBC_SHA | SSL_RSA_WITH_DES_CBC_SHA | TLSv1 | False |
| TLS_RSA_WITH_NULL_SHA256 | SSL_RSA_WITH_NULL_SHA256 | TLS_RSA_WITH_NULL_SHA256 | TLSv1.2 | False |
| TLS_RSA_WITH_RC4_128_SHA256 | SSL_RSA_WITH_RC4_128_SHA | SSL_RSA_WITH_RC4_128_SHA | TLSv1.2 | False |
- 不推荐此 CipherSpec TLS_RSA_WITH_3DES_EDE_CBC_SHA。 但是,它仍可用于传输最多 32 GB 数据,超过此数据量之后,连接将因错误 AMQ9288 而终止。 要避免此错误,您需要避免使用三重 DES,或在使用此 CipherSpec 时启用密钥重置。
从 IBM MQ 9.0.0 CSU 24 开始,当以 FIPS 模式运行时, IBM Java 8 JRE 不再支持 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 映射
com.ibm.mq.cfg.useIBMCipherMappings 控制使用哪些映射。 该属性可以具有以下某个值:- true
- 使用 IBM Java CipherSuite 到 IBM MQ CipherSpec 映射。
- false
- 使用 Oracle CipherSuite 到 IBM MQ CipherSpec 映射。
有关使用的更多信息 IBM MQJava 和 TLS 密码,请参阅 MQdev 博客文章 MQ Java、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 时启用密钥重置。