现在,我正在尝试根据https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html#gdemv为我的JMX代理启用SSL
和password
身份验证。
我已根据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
最后抱怨如下:
此消息的翻译是:
无法安全连接到服务器。我们应该不安全地重试吗?
无法连接到服务: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手册,结果证明是另一次失败。我不知道我错在哪里以及如何解决这个问题。
任何建议都会受到欢迎!