为 Apache Tomcat 配置 JMX 连接

您必须为 Apache Tomcat 应用程序服务器配置安全的 JMX 连接。

关于此任务

Server Configuration Tool 和 Ant 任务可以配置缺省安全 JMX 连接,其包括 JMX 远程端口的定义以及认证属性的定义。它们将修改 tomcat_install_dir/bin/setenv.battomcat_install_dir/bin/setenv.sh,从而将这些选项添加到 CATALINA_OPTS
-Djava.rmi.server.hostname=localhost
-Dcom.sun.management.jmxremote.port=8686
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
注: 8686 是缺省值。如果计算机上该端口不可用,可以更改此端口的值。
  • 如果您通过 tomcat_install_dir/bin/startup.battomcat_install_dir/bin/catalina.bat 启动 Apache Tomcat,那么将使用 setenv.bat 文件。
  • 如果您通过 <tomcatInstallDir>/bin/startup.shtomcat_install_dir/bin/catalina.sh 启动 Apache Tomcat,那么将使用 setenv.sh 文件。
如果您通过其他命令启动 Apache Tomcat,那么可能不会使用此文件。如果您安装了 Apache Tomcat Windows Service Installer,那么服务启动程序不会使用 setenv.bat
要点: 缺省情况下,此配置不安全。要保护配置,您必须手动完成以下过程的 步骤 2 和 3。

过程

手动配置 Apache Tomcat:

  1. 对于简单配置,请将以下选项添加到 CATALINA_OPTS
    -Djava.rmi.server.hostname=localhost
    -Dcom.sun.management.jmxremote.port=8686
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false
  2. 要激活认证,请参阅 Apache Tomcat 用户文档 SSL 支持 - BIO 和 NIO 以及 SSL 配置方法
  3. 对于启用了 SSL 的 JMX 配置,请添加以下选项:
    -Dcom.sun.management.jmxremote=true
    -Dcom.sun.management.jmxremote.port=8686
    -Dcom.sun.management.jmxremote.ssl=true 
    -Dcom.sun.management.jmxremote.authenticate=false 
    -Djava.rmi.server.hostname=localhost  
    -Djavax.net.ssl.trustStore=<key store location>
    -Djavax.net.ssl.trustStorePassword=<key store password>
    -Djavax.net.ssl.trustStoreType=<key store type>
    -Djavax.net.ssl.keyStore=<key store location>
    -Djavax.net.ssl.keyStorePassword=<key store password>
    -Djavax.net.ssl.keyStoreType=<key store type>
    注: 可以更改端口 8686
  4. 如果 Tomcat 实例在防火墙背后运行,那么必须配置 JMX 远程生命周期侦听器。请参阅 JMX 远程生命周期侦听器的 Apache Tomcat 文档。

    还必须将以下环境属性添加到 server.xml 文件中的管理服务应用程序的 Context 节,如以下示例所示:

    <Context docBase="mfpadmin" path="/mfpadmin ">
        <Environment name="mfp.admin.rmi.registryPort" value="registryPort" type="java.lang.String" override="false"/>
        <Environment name="mfp.admin.rmi.serverPort" value="serverPort" type="java.lang.String" override="false"/>
    </Context>

    在上一个示例中:

    • registryPort 必须具有与 JMX 远程生命周期侦听器的 rmiRegistryPortPlatform 属性相同的值。
    • serverPort 必须具有与 JMX 远程生命周期侦听器的 rmiServerPortPlatform 属性相同的值。
  5. 如果您通过 Apache Tomcat Windows Service Installer(而不是向 CATALINA_OPTS 添加选项)安装了 Apache Tomcat,那么请运行 tomcat_install_dir/bin/Tomcat7w.exe,并在“属性”窗口的 Java 选项卡中添加选项。
    Apache Tomcat Windows Service Installer 的“属性”窗口中的 Java 选项卡