我试图将SSL与Active MQ创建的JMX连接器一起使用,但没有成功。我可以使SSL与JVM平台JMX连接器一起使用,但这需要存储密钥库和信任库密码的明文,这对于我们的项目是不行的。

使用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批处理文件中的Windows上,取消注释并修改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/

10-11 22:28
查看更多