我已从没有SSL的计算机连接了JMX连接。但是当我提供SSL虽然应用程序正在启动而没有任何错误时,VisualVM无法通过指定的端口建立JMX连接。以下是我用来从App端建立JMX连接的命令。
java -Dcom.sun.management.jmxremote.port = 4444 -Dcom.sun.management.jmxremote.password.file =" C:/ Program Files / Java / jre1.8.0_25 / lib / management / jmxremote.password" -Djavax.net.ssl.keyStore =" C:/ Program Files / Java / jdk1.8.0_25 / bin / testkeystore" -Djavax.net.ssl.keyStorePassword = 123456 -Dcom.sun.management.jmxremote.ssl = true -Dcom.sun.management.jmxremote.authenticate = true DemoApp
请建议。
答案 0 :(得分:1)
即使这是一个非常老的问题,@ Klara的评论也帮助我快速解决了类似问题。
keytool -exportcert-别名服务器-keystore /jkslocation/serverKS.jks -storepass storepassword -file /certificatelocation/certificate.cer
然后我将导出的证书添加到信任存储中: keytool-导入-别名服务器-keystore /jkslocation/clientTS.jks -storepass storepassword -file /certificatelocation/certificate.cer -v
然后将clientTS.jks复制到运行jVisualVM的客户端计算机上。
jVisualVM使用信任库参数启动: ./jvisualvm -J-Djavax.net.ssl.trustStore = clientTS.jks -J-Djavax.net.ssl.trustStorePassword = clientTSPassword
jVisualVM可以访问服务器JMX端口。