https://issues.apache.org/bugzilla/show_bug.cgi?id=57377

            Bug ID: 57377
           Summary: Incorrect use of standard SSL properties for JMX in
                    JMXRemoteLifecycleListener
           Product: Tomcat 7
           Version: trunk
          Hardware: All
                OS: All
            Status: NEW
          Severity: major
          Priority: P2
         Component: Catalina
          Assignee: dev@tomcat.apache.org
          Reporter: rsan...@gmail.com

This ticket references some older bugs and changes related to them as below:
- https://issues.apache.org/bugzilla/show_bug.cgi?id=55017 - Ability to provide
an RMI bind address (so that the RMI server can be selectively bound to
loopback only)

- https://issues.apache.org/bugzilla/show_bug.cgi?id=56039 - This is a symptom
to my problem, but was fixed and works fine.

Here is the problem:
The standard JMX properties
(http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html,
http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html#gdevf)
are different for enabling SSL/TLS for the RMI registry (where jmxrmi is
registered) and the JMX RMI server (which carries the JMX operations), being
com.sun.management.jmxremote.registry.ssl and com.sun.management.jmxremote.ssl
respectively.
When 55017 was done, the RMI server factories thus created were used in
creating the RMI registry
(http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/mbeans/JmxRemoteLifecycleListener.java?revision=1498340&view=markup,
line number 274)
This works fine as long as we are not using SSL and I guess this is one of the
reasons Alexey Noskov said "rmiBindAddress incompatible with rmiSSL".

This side effect was noticed in bug# 56039 and was fixed to allow RMI registry
clients to use com.sun.jndi.rmi.factory.socket.

Recommendation:
Would it be possible to have separate RMIServerSocketFactory for JMX/RMI and
RMI registry, one dictated by com.sun.management.jmxremote.ssl (which results
in the rmiSSL flag) and the other by com.sun.management.jmxremote.registry.ssl.

This way the agent will be more compliant and we'd still have the ability to
leave the RMI registry non SSL (which is to get the JMX/RMI connection stub).

We can also fix the "rmiBindAddress incompatible with rmiSSL" problem by
creating a custom SslRMIServerSocketFactory (basically extending the one in JDK
and re-implementing the createServerSocket method to use the given
rmiBindAddress.

I'd be happy to do these changes, and can provide the changed version of this
file, if this request seems reasonable. May be a patch as well if I learn SVN
quickly.

PS: The whole reason I reached here is that we in our products use custom JMX
authentication and SSL/TLS implementation. We implement the
jmx.remote.protocol.provider.pkgs approach to inject our SSL factories for
JMXConnnectorServer. This recently broke because we have no control over how
the server socket for RMI registry is created. We ended up setting
com.sun.management.jmxremote.ssl to false to avoid this
JMXRemoteLifecycleListener to stop doing SSL anywhere.

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to