2015-12-22 21 views
9

Skonfigurowałem Apache Tomcat 8 przy użyciu tego samouczka https://tomcat.apache.org/tomcat-7.0-doc/monitoring.html i wygenerowałem certyfikat SSL.Klient Java JMX z SSL

JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://10.16.70.161:9999/jmxrmi"); 

      HashMap environment = new HashMap(); 
      String[] credentials = new String[] 
      { 
       "user", "passw" 
      }; 
      environment.put(JMXConnector.CREDENTIALS, credentials); 

      JMXConnector jmxc = JMXConnectorFactory.connect(url, environment); 
      MBeanServerConnection server = jmxc.getMBeanServerConnection(); 

      Set<ObjectName> s2 = server.queryNames(new ObjectName("Catalina:type=Server,*"), null); 
      for (ObjectName obj : s2) 
      { 
       ObjectName objname = new ObjectName(obj.getCanonicalName()); 
       System.out.println("serverInfo " + server.getAttribute(objname, "serverInfo")); 
       System.out.println("address " + server.getAttribute(objname, "address")); 
       System.out.println("stateName " + server.getAttribute(objname, "stateName")); 
      } 

Jak mogę rozszerzyć tego klienta JMX, aby móc go używać z certyfikatem SSL? Nie mogę znaleźć żadnego dobrego przykładu w Internecie.

Odpowiedz

6

Jesteś prawie tam, Twój kod jest poprawny, trzeba tylko uruchomić klienta JMX z wiersza polecenia po dodaniu certyfikatu SSL do trust store przy użyciu narzędzia wiersza polecenia keytool:

java -Djavax.net.ssl.trustStore=/your/path/to/truststore.jks \ 
    -Djavax.net.ssl.trustStorePassword=truststore_pwd \ 
    YourJMXClient 
+0

Dlaczego dodajesz SslRMIServerSocketFactory i SslRMIClientSocketFactory? Czy jest to obowiązkowe? –

+0

Niestety, jest to konieczne tylko wtedy, gdy chcesz utworzyć serwer JMX. W tym przypadku wszystko, co musisz zrobić, to skonfigurować swój magazyn zaufania i przekazać go do klienta po uruchomieniu. – Val

+0

Czy mogę w jakiś sposób użyć kodu Java do ustawienia lokalizacji i hasła trustStore bez pełnego niestandardowego klienta JMX? Zrobiłem nowy post tutaj http://stackoverflow.com/questions/34474023/replace-system-setproperty –