wmq.jmsra.rar
),该适配器与EAR文件一起部署在同一AS中。我们在两个方向上与MQ服务器交互。因此,我们一方面有一些MDB(由于历史原因仍然采用EJB 2.x格式而没有注释)监听某些队列,并由包含激活配置属性destinationType、channel、queueManager、hostName、username、password
的ejb-jar.xml
部署描述符进行配置。另一方面,我们有一个发送者,通过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虚拟机,因此需要设置以下参数:
-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">
最后,监听队列的MDBs也必须配置使用密码套件,因此在我的情况下,我需要通过为每个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>
sslCertStores
属性,但它指向某些LDAP。我觉得必须有一种方法告诉我的WildFly使用具有证书的密钥库来处理所有出站和入站JMS流量。 - Alexander Rühl