最近我已经迁移到 IBM MQ v8 到 IBM MQ v9(特别是 v9.1.2.0)。我使用 SSL 与经纪人通信。因此,根据Deprecated CipherSpecs文档,IBM 已经弃用了 MQ 8 附带的密码套件数量,并且似乎我一直在使用的所有密码套件都已被 v9 向上弃用。因此,我已经实施了新的 TLS 密码套件来处理我在 Oracle JVM(版本 1.8.0_211)上运行的应用程序。自从我在应用程序中遇到异常以来;
com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2400'.
at com.ibm.mq.MQManagedConnectionJ11.constructMQCD(MQManagedConnectionJ11.java:1437)
at com.ibm.mq.MQManagedConnectionJ11.constructCNO(MQManagedConnectionJ11.java:1537)
at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:221)
... (Omitted the rest)
当我深入了解原因时,发现这是 IBM MQ 密码套件和 Oracle JRE 密码套件名称不匹配的问题。但我确实在 IBM MQ classes for JMS 文档中引用了 TLS CipherSpecs 和 CipherSuites来映射密码套件名称。我在我的应用程序中使用了一些在 IBM MQ 中也可用的Equivalent CipherSuite (Oracle JRE)列值。但仍然遇到问题。
在我找到这个建议将这个参数添加到 IBM MQ 的 JRE 的答案-Dcom.ibm.mq.cfg.useIBMCipherMappings=false之后(据我所知)。这可能允许 IBM MQ 使用 Oracle 兼容的密码套件名称。我的问题是,
如何将此 JVM 参数添加-Dcom.ibm.mq.cfg.useIBMCipherMappings=false到 IBM MQ JRE?
这个问题将 Java 客户端 (JMS) 连接到 IBM MQ问题表明需要将相同的参数作为系统属性添加到应用程序中System.setProperty("com.ibm.mq.cfg.useIBMCipherMappings", "false"),但它没有任何不同。
Java connection to WMQ 8 question 也说明了相同的解决方案,但没有提到如何将此 JVM 参数添加到 IBM MQ。
更新 1
我做了一些关于如何向 IBM MQ 添加 JVM 参数的研究。但我只能找到 Websphere 应用程序服务器的解决方案。
我目前在应用程序中使用的 CipherSuite 是;
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256(符合 Oracle JRE)
IBM MQ 有相应的;
ECDHE_ECDSA_AES_128_CBC_SHA256(符合 IBM MQ)
元芳怎么了
慕容3067478
相关分类