如何通过JNDI命名服务器连接时为Hornetq客户端指定本地自定义SSL信任库

问题描述 投票:0回答:1

我们有一个java客户端(mule app),它使用hornetq客户端(v2.3.25.SP20)通过JNDI命名服务器(端口1099)连接到HornetQ远程服务器。连接使用SSL保护。驱动程序要求显式设置javax.net.ssl.trustStore属性。否则,它找不到信任存储。

我们想为会话指定自定义信任库。但是设置全局属性javax.net.ssl.trustStore可能会影响其他应用程序。所以,我们正在寻找替代方案。

我编写了一个自定义信任管理器(X509TrustManager),它指向自定义信任库。但问题是它仅用于与JNDI服务器建立连接。然后,实际的连接对象从远程服务器获取信任存储位置(当然,如果未设置javax.net.ssl.trustStore)。 产生错误HQ212007:

connector.create或connectorFactory.createConnector永远不应抛出异常,实现表现不佳,但无论如何我们都会处理它。

无法为myserver创建NettyConnector:4447 无法在远程服务器密钥库位置找到商店

谷歌搜索错误代码,我发现非常类似的问题描述与解决方案提供here

那么,当通过JNDI连接时,是否存在另一种为hornetq客户端指定信任库路径的方法,那么它是否会影响在同一VM系统上运行的其他应用程序?或者,可能有一种方法可以在客户端完全禁用SSL证书验证 - 这对我们也有用吗?

ssl jms hornetq
1个回答
1
投票

HornetQ特定的系统属性用于设置SSL配置参数。看看the documentation for HornetQ 2.4.0

这些属性是在2.3.0.Final之后添加的,但后向移植到2.3.x分支,这就是为什么它们在2.3.25.SP20中可用,但没有记录在2.3.0.Final文档中。

简而言之,您可以使用这些系统属性而不是全局属性:

  • org.hornetq.ssl.keyStore
  • org.hornetq.ssl.keyStorePassword
  • org.hornetq.ssl.trustStore
  • org.hornetq.ssl.trustStorePassword
© www.soinside.com 2019 - 2024. All rights reserved.