Я пытаюсь получить JMX-доступ с SSL к ActiveMQ (5.8.0 или 5.9.0, работающий под java 1.6.0), но мне не повезло. Раньше я имел дело с JMX-доступом с поддержкой SSL, поэтому я хорошо знаком с настройкой хранилищ ключей, хранилищ доверенных сертификатов и т. Д. Все наши серверы расположены в AWS, поэтому нам также приходится иметь дело с пробиванием дыр в брандмауэрах. Я могу заставить незашифрованный JMX работать на нашем сервере ActiveMQ, указав следующее в файле activemq.xml:
<managementContext>
<managementContext connectorPort="1099" rmiServerPort="1098" connectorHost="<local IP of AWS instance>" />
</managementContext>
А также указав следующие параметры Java при запуске ActiveMQ:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.password.file=/path/to/jmx.passwd
-Dcom.sun.management.jmxremote.access.file=/path/to/jmx.access
-Djava.rmi.server.hostname=<public IP of AWS instance>
ManagementContext, по-видимому, не имеет параметров для поддержки SSL, поэтому я также пытаюсь включить следующее в мою командную строку Java (которая отлично работает с другими нашими приложениями Java для доступа к JMX через SSL):
-Dcom.sun.management.jmxremote.ssl=true
-Djavax.net.ssl.keyStore=/path/to/keystore
-Djavax.net.ssl.trustStore=/path/to/truststore
-Djavax.net.ssl.keyStorePassword=<password>
-Djavax.net.ssl.trustStorePassword=<password>
-Dcom.sun.management.jmxremote.ssl.need.client.auth=false
Похоже, что ActiveMQ просто игнорирует эти настройки. Если я использую команду openssl s_client -connect: для запроса порта сервера RMI Java-процесса, в котором работает JMX / SSL, он отображает все сведения об используемом сертификате. Однако, если я запускаю команду на порте сервера ActiveMQ RMI, я получаю сообщение о том, что сертификат однорангового узла недоступен.
Возможно ли SSL-шифрование JMX-доступа к ActiveMQ, или мне не повезло, поскольку, похоже, их managementContext не поддерживает его?