【问题标题】:Generic JMS Client with SSL connection capability具有 SSL 连接能力的通用 JMS 客户端
【发布时间】:2015-01-16 16:14:05
【问题描述】:
目前,我使用标准 JMS API(仅javax.jms.* 类)实现了一个非 SSL 安全客户端。当提供特定的产品 JAR 和适当的类名时,它能够连接到任何 JMS 服务器。
有没有办法实现这种具有 SSL 连接功能的通用(独立于供应商)JMS 客户端?
我的研究没有成功 - 我发现了几个使用 SSL 实现 JMS 的示例(例如 Novell JMS、ActiveMQ),但它们都没有避免在代码中直接使用供应商特定的类,并且实现差异很大。
【问题讨论】:
标签:
java
jakarta-ee
ssl
jms
【解决方案1】:
使用 SSL 不需要在客户端更改任何代码。添加 SSL 功能只是配置问题。
一般来说,有一些不同之处:
-
连接 URL,以便客户端通过 SSL 协议连接到正确的端口(@987654321@ 而不是
tcp://broker_url)。
-
连接工厂类 - 可能与非 SSL 不同。
-
要使用的 Keystore 和/或 truststore。可以使用特定方法以编程方式设置这些文件的路径——但这种方法需要实现供应商特定的代码。更好的选择是传递 KS/TS java 系统属性。 (使用
-D JVM 选项,即使没有任何准备也可以完成。)
由于第 2 点和第 3 点因 JMS 代理而异,请参阅供应商的文档以了解更多详细信息。
此答案基于成功连接到 Apache ActiveMQ 和 Tibco EMS 的经验,包括相互证书身份验证。