У меня была такая же проблема, касающаяся конфигурации SSL ActiveMQ (хранилище ключей и пароль) в XML не работает.
Моим требованием было включить удаленный JMX-мониторинг ActiveMQ с SSL и аутентификацию через брандмауэр.
Я решил использовать собственный JMX-коннектор (через Java-агент), а не JMX-коннектор, который создает Active MQ.
см. JMX-подключение через брандмауэр для примера (JMXAgent.java)
Важные записи для настройки SSL в JMXAgent.java:
Map<String, Object> env = new HashMap<String, Object>();
SslRMIClientSocketFactory csf = new SslRMIClientSocketFactory();
SslRMIServerSocketFactory ssf = new SslRMIServerSocketFactory();
env.put(RMIConnectorServer.RMI_CLIENT_SOCKET_FACTORY_ATTRIBUTE, csf);
env.put(RMIConnectorServer.RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE, ssf);
Вы также можете указать свои файлы аутентификации в карте env:
env.put("jmx.remote.x.password.file", System.getProperty("password.file","<default_path>"));
env.put("jmx.remote.x.access.file", System.getProperty("access.file","<default_path>"));
Агент Java должен быть скомпилирован и помещен в jar с допустимым файлом манифеста, как описано здесь
Добавьте следующее в конфигурацию запуска activemq (в зависимости от версии / среды activemq и запуска ActiveMQ:
-javaagent:<full_path_to_agent_jar_file> \
-Dpassword.file=<full_path_to_jmx.password_file> \
-Daccess.file=<full_path_to_jmx.access_file> \
-Djavax.net.ssl.keyStore=<full_path_to_keystore_file> \
-Djavax.net.ssl.keyStorePassword=<password>
После этого вы сможете подключиться через jconsole (с правильными параметрами безопасности)
URL удаленного JMX-соединения будет выглядеть примерно так:
service:jmx:rmi://<host>:<rmi_server_port>/jndi/rmi://<host>:<port>/jmxrmi
Примечание. Порты можно настроить в агенте Java.