Estou tentando obter acesso ao JMX com SSL ativado para o ActiveMQ (5.8.0 ou 5.9.0 em execução no java 1.6.0), mas não estou tendo sorte. Já lidei com o acesso ao JMX com SSL ativado, por isso estou bastante familiarizado com a configuração de keystores, truststores, etc. Nossos servidores estão todos localizados na AWS, então temos que lidar com buracos através de firewalls também. Consigo obter o JMX não criptografado funcionando em nosso servidor do ActiveMQ, especificando o seguinte no arquivo activemq.xml:
<managementContext>
<managementContext connectorPort="1099" rmiServerPort="1098" connectorHost="<local IP of AWS instance>" />
</managementContext>
E também especificando os seguintes parâmetros Java ao inicializar o 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>
O managementContext aparentemente não tem parâmetros para suportar SSL, então estou tentando incluir também o seguinte em minha linha de comando Java (que funciona bem com nossos outros aplicativos Java para acessar o JMX sobre 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
Parece que o ActiveMQ está simplesmente ignorando essas configurações. Se eu usar o comando 'openssl s_client -connect:' para consultar a porta do servidor RMI de um processo Java no qual o JMX / SSL está funcionando, ele exibirá todos os detalhes sobre o certificado sendo usado. No entanto, se eu executar o comando na porta do servidor do ActiveMQ RMI, recebo uma mensagem indicando que nenhum certificado de peer está disponível.
É possível criptografar SSL no acesso do JMX ao ActiveMQ, ou estou sem sorte, já que parece que o seu managementContext não o suporta?