如上所述,默认情况下将使用预配置的 JMX 连接器 jmxrmi 来配置 Message Queue 消息代理,从而进行不安全的通信。需要使用安全套接字层 (Secure Socket Layer, SSL) 进行安全通信的应用程序,必须激活备用的安全 JMX 连接器 ssljmxrmi。这需要执行以下步骤:
获取和安装签名证书,方法与为 ssljms、ssladmin 或 cluster 连接服务获取和安装签名证书(如 Message Queue 管理指南 中所述)相同。
在信任存储库中安装根证书颁发机构颁发的证书(如有必要)。
将 ssljmxrmi 连接器添加到代理启动时要激活的 JMX 连接器列表:
imq.jmx.connector.activelist=jmxrmi,ssljmxrmi
使用 Message Queue 代理实用程序 ( imqbrokerd) 启动代理,可以将密码文件中的密钥库密码传递给此实用程序,也可以在提示时从命令行键入密码。
默认情况下,ssljmxrmi 连接器(或基于 SSL 的任何其他连接器)被配置为验证提供给它的所有代理 SSL 证书。要避免进行此验证(例如,在使用自签名证书进行软件测试时),请将代理属性 imq.jmx.connector.ssljmxrmi.brokerHostTrusted 设置为 true。
在客户端,必须使用将 ssljmxrmi 指定为首选连接器的 URL 配置管理员连接工厂 (AdminConnectionFactory ) :
AdminConnectionFactory acf = new AdminConnectionFactory(); acf.setProperty(AdminConnectionConfiguration.imqAddress, "mq://myhost:7676/ssljmxrmi");
如果需要,可使用系统属性 javax.net.ssl.trustStore 和 javax.net.ssl.trustStorePassword 将 JMX 客户端指向信任存储库。