【发布时间】:2018-04-06 12:44:03
【问题描述】:
我们是更大环境中的一个应用程序和一些数据接口的客户端,使用 Websphere MQ 8.x。我们的应用程序是在 WildFly 9 上运行的 Java EE 应用程序,它使用资源适配器 (wmq.jmsra.rar),它与 EAR 文件一起部署在同一个 AS 中。我们在两个方向与 MQ 服务器交互。因此,一方面我们有一些 MDB(由于历史起源仍然是没有注释的 EJB 2.x 格式)列出了一些队列,这些 MDB 由 ejb-jar.xml 部署描述符配置,包含激活配置属性 destinationType, channel, queueManager, hostName, username, password .另一方面,我们有一个发送方,它通过 JNDI 查找队列连接工厂和队列并创建连接。
现在我们需要与新建立的 MQ 服务器通过 SSL 和客户端证书进行通信。我们从服务器人员那里为我们的机器获得了这样的证书。所以我的问题是:
- 必须做些什么才能使其与上述设置一起使用?
- 这是否可能纯粹通过配置来实现,从而对应用程序透明,或者让应用程序专门使用 SSL、提供证书或类似的东西?
- 这是否与应用程序其他部分已使用的任何其他密钥库冲突?
- 是否需要一些额外的 IBM MQ 软件才能使其工作? (我们的客户端只是RAR,没有安装任何软件,我们这边不需要建立MQ服务器。)
更新:我开始为 VM 设置全局 JSSE 属性,因为它解决了我的问题。
需要设置以下参数:
-Djavax.net.ssl.trustStore=<location of trustStore>
-Djavax.net.ssl.keyStore=<location of keyStore>
-Djavax.net.ssl.keyStorePassword=<password>
另外,由于我使用的是非IBM VM,因此需要设置以下参数:
-Dcom.ibm.mq.cfg.useIBMCipherMappings=false
然后,需要在standalone-full.xml 中的RAR 配置中设置密码套件属性以及我的WildFly 安装的其他连接参数:
<resource-adapter id="wmq.jms.rar">
...
<connection-definitions>
<connection definition ...>
<config-property name="sslCipherSuite">xxx</config-property>
...
</resource-adapter">
最后,列在队列中的 MDB 也必须配置为使用密码套件,所以在我的情况下,我必须通过为每个 MDB 添加将其添加到 ejb-jar.xml 中:
<activation-config-property>
<activation-config-property-name>sslCipherSuite</activation-config-property-name>
<activation-config-property-value>xxx</activation-config-property-value>
<activation-config-property>
【问题讨论】:
-
@JoshMc 感谢您的提示。服务器是 8.0.0.7。目前我的客户是 9.0.0.1 - 这是一个问题还是我应该在那里有相同的版本? JDK 是 OpenJDK 8。我希望 RAR 支持它,并且底层执行实际的 SSL,但是你能指出我如何在密钥库中配置 SSL 和特定证书的使用吗?
-
也许这会有所帮助:“How to configure JBOSS connectivity with Websphere SSL enabled MQ?”。请注意,他似乎有一个有效的 JBOSS 配置,只是有一个密码错误,所以如果类似于 Wildfly 9 的配置可能会有所帮助。
-
@JoshMc 我已经偶然发现了这个问题,对我来说,关于 RAR 似乎没有什么比用正确的 sslCipherSuite 替换我之前拥有的用户和密码了,你同意吗?以及证书和密钥库需要做什么?
-
@JoshMc 好的,再次感谢。希望这方面的最后一个问题:我的 WildFly 已经在我无法控制的其他部分使用了密钥库,所以我想我不能将它作为通用 VM 参数传递。有没有办法专门指定仅用于 MQ 或 JMS 子系统的密钥库?我唯一发现的是资源适配器中的属性
sslCertStores,但它指向一些LDAP。我觉得一定有办法告诉我的 WildFly 使用带有证书的密钥库来处理所有出站和入站 JMS 流量。
标签: java ssl jakarta-ee ibm-mq client-certificates