基于SSL的JMX RMI无法与Jconsole

时间:2017-09-26 07:35:42

标签: ssl rmi jmx jconsole

现在,我正在尝试根据https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html#gdemv为我的JMX代理启用SSLpassword身份验证。

我已根据IBM知识库文章https://www.ibm.com/support/knowledgecenter/en/SSJJ9R_5.0.1/com.ibm.jazz.repository.web.admin.doc/topics/t_server_mon_tomcat_option3.html进行了尝试。

我甚至尝试在我的小HTTPS应用程序中为我的嵌入式tomcat启用Spring Boot,如下所示:

server:
  ssl:
    enabled: true
    key-store: ${java.home}\\lib\\management\\jmxrmi-server.jks
    key-password: -P@ssw0rd
    trust-store: ${java.home}\\lib\\management\\jmxrmi-trust.jks
    trust-store-password: -P@ssw0rd
  port: 443

实际上,我已经按照以下步骤逐步完成了这一步:

为JMX服务器和JConsole生成两个keystore

keytool -genkey -keyalg rsa -keysize 2048 -keystore server.jks -alias server
keytool -genkey -keyalg rsa -keysize 2048 -keystore client.jks -alias client
keytool -exportcert -keystore server.jks -file server.cer -alias server
keytool -exportcert -keystore client.jks -file client.cer -alias client
keytool -importcert -keystore server.jks -file client.cer -alias client
keytool -importcert -keystore client.jks -file server.cer -alias server

启动JMX示例应用程序:

java -Dcom.sun.management.jmxremote=true \
-Dcom.sun.management.jmxremote.port=1099 \
-Dcom.sun.management.jmxremote.ssl=true \
-Dcom.sun.management.jmxremote.registry.ssl=true \
-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.ssl.need.client.auth=true \
-Djavax.net.ssl.keyStorePassword=123456 \
-Djavax.net.ssl.keyStore=D:\\programs\\jdk1.8.0_144\\jre\\lib\\management\\server.jks \
-Djavax.net.ssl.trustStorePassword=123456 \
-Djavax.net.ssl.trustStore=D:\\programs\\jdk1.8.0_144\\jre\\lib\\management\\server.jks \
-jar example-jmx/target/example-jmx-1.0.0-SNAPSHOT.jar

启动JConsole:

jconsole -J-Djavax.net.ssl.keyStorePassword=123456 \
-J-Djavax.net.ssl.keyStore=D:\\programs\\jdk1.8.0_144\\jre\\lib\\management\\client.jks \
-J-Djavax.net.ssl.trustStorePassword=123456 \
-J-Djavax.net.ssl.trustStore=D:\\programs\\jdk1.8.0_144\\jre\\lib\\management\\client.jks \
service:jmx:rmi:///jndi/rmi://0.0.0.0:1099/jmxrmi

最后抱怨如下:

enter image description here

此消息的翻译是:

无法安全连接到服务器。我们应该不安全地重试吗?

无法连接到服务:jmx:rmi:/// jndi / rmi://0.0.0.0:1099 / jmxrmi 。您想在没有SSL的情况下重试吗?(用户名和密码将以纯文本格式发送。)

我在https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html#gdemv中查看了有关使用JMX进行监控和管理的sun手册,结果证明是另一次失败。我不知道我错在哪里以及如何解决这个问题。

任何建议都会受到欢迎!

0 个答案:

没有答案