ssl - 主动 MQ JMX SSL

标签 ssl activemq jmx

我尝试将 SSL 与 Active MQ 创建的 JMX 连接器一起使用,但没有成功。我能够让 SSL 与 JVM 平台 JMX 连接器一起工作,但这需要存储 keystore 和信任库密码明文,这对我们的项目来说是行不通的。

使用说明here ,我在activemq.xml中设置managementContext如下:

<managementContext>
  <managementContext createConnector="true">
    <property xmlns="http://www.springframework.org/schema/beans" name="environment">
      <map xmlns="http://www.springframework.org/schema/beans">
        <entry xmlns="http://www.springframework.org/schema/beans"
               key="javax.net.ssl.keyStore"
               value="${activemq.base}/conf/keystore.jks"/>
        <entry xmlns="http://www.springframework.org/schema/beans"
               key="javax.net.ssl.keyStorePassword"
               value="${keystore.password}"/>
        <entry xmlns="http://www.springframework.org/schema/beans"
               key="javax.net.ssl.trustStore" 
               value="${activemq.base}/conf/truststore.jks"/>
        <entry xmlns="http://www.springframework.org/schema/beans" 
               key="javax.net.ssl.trustStorePassword" 
               value="${truststore.password}"/> 
      </map>
    </property>
  </managementContext>
</managementContext>

当连接器启动时,这部分似乎被完全忽略了。我可以在没有凭据的情况下连接。我还尝试对 JMX 使用用户名和密码身份验证而不是 ssl,如 here 所示,效果很好。

有没有人见过这个?有任何想法吗?谢谢!

最佳答案

您是否在 activemq 启动脚本中启用了 jmx ssl?在 activemq-admin 或 activemq 批处理文件的窗口中,取消注释并修改 SUNJMX 设置。

JMX 身份验证与是否使用 ssl 无关。它由 authenticate 属性控制。默认情况下,它将使用您的 jre 中的 jmx 访问文件,因此使用如下所示的系统属性重新指向它们。您可能会收到一条错误消息,指出文件本身必须是访问控制的,因此在 unix 上使用 chmod 或在 Windows 上使用 cacls 设置它们。我什至建议关闭 ssl 并首先进行身份验证。您可以使用带有远程连接的 jconsole 进行测试,以确认它需要凭据。然后跟进 ssl 的东西。

set SUNJMX=-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=1199 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=true -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.password.file=%ACTIVEMQ_BASE%/conf/access/jmx.password -Dcom.sun.management.jmxremote.access.file=%ACTIVEMQ_BASE%/conf/access/jmx.access

关于ssl - 主动 MQ JMX SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7017686/

相关文章:

java - C3P0Registry mbean 未向 MBeanServer 注册。获取 InstanceNotFoundException

java - 检测新注册的 MBean

django - 我如何获得 ssl 证书以使用我的 django 应用程序

ruby-on-rails - 如何在 Sidekiq 上为 Redis 6 启用 TLS?

java - XMPP Client(带smack)和ActiveMQ,如何拦截 "adminConsole"消息

java - 通过 JMX 监控和管理 GenericObjectPool

c# - 根据自签名证书颁发机构验证服务器证书

perl - 在 Ubuntu 12.04 上为 Perl 5.14.2 LWP 安装新的 ca 证书

java - Spring boot服务在没有应用程序服务器的情况下监听ActiveMQ

java - 运行jms队列时,生产者发送消息,消费者获取消息,但消息不显示