VisualVM通过ssl远程连接JVM

VisualVM通过密码连接JVM实例如下

https://www.cnblogs.com/qq931399960/p/10960573.html

虽然设置了密码,但还是不够安全,只要获取到密码,在任何机器上都可以连接JVM。所以需要使用到SSL,SSL需要提供证书才能访问,安全性较高

一、生成证书

1、第一步,生成供客户端使用的visualvm.keystore

keytool -genkeypair -alias visualvm -keyalg RSA -validity 365 -storetype pkcs12  -keystore visualvm.keystore  -storepass 123456 -keypass 123456 

如下输入内容自定义填写即可

2、第二步,导出visual cert

keytool -exportcert -alias visualvm -storetype pkcs12 -keystore visualvm.keystore -file visualvm.cer -storepass 123456

3、第三步,生成客户端使用的java-app.truststore

keytool -importcert -alias visualvm -file visualvm.cer -keystore java-app.truststore -storepass 123456 -noprompt

4、第四步,生成服务器程序运行所需的java-app.keystore

keytool -genkeypair -alias java-app -keyalg RSA -validity 365 -storetype pkcs12 -keystore java-app.keystore -storepass 123456 -keypass 123456

5、第五步,导出java-app的cert

keytool -exportcert -alias java-app -storetype pkcs12 -keystore java-app.keystore -file java-app.cer -storepass 123456

6、第六步,生成visualvm.truststore

keytool -importcert -alias java-app -file java-app.cer -keystore visualvm.truststore -storepass 123456 -noprompt

 

以上结束后,生成六个文件,其中四个后缀分别keystore和truststore文件是我们所需要的文件

 二、修改程序启动脚本

#!/bin/bash

cd `dirname $0`
java -jar -Djava.rmi.server.hostname=192.168.102.31 -Dcom.sun.management.jmxremote.port=1566 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.registry.ssl=true -Dcom.sun.management.jmxremote.ssl.need.client.auth=true -Djavax.net.ssl.keyStore=./visual/java-app.keystore -Djavax.net.ssl.keyStorePassword=123456 -Djavax.net.ssl.trustStore=./visual/java-app.truststore -Djavax.net.ssl.trustStorePassword=123456 -Xms100m -Xmx100m springbootdemo.jar &

三、打开jvisualvm,连接JVM

1、首先确定服务器程序已经启动

2、进入windows中java安装路径下的bin目录下,摁住shift键,右键选择 “在此处打开命令窗口”,执行如下脚本(证书在linux上生成后,将其拿到了windows上的F:/visual/文件夹下,如果路径与如下脚本不一致,则需要修改),回车,此时将会弹出Java VisualVM界面

jvisualvm -J-Djavax.net.ssl.keyStore=F:/visual/visualvm.keystore -J-Djavax.net.ssl.keyStorePassword=123456 -J-Djavax.net.ssl.trustStore=F:/visual/visualvm.truststore -J-Djavax.net.ssl.trustStorePassword=123456

3、按照https://www.cnblogs.com/qq931399960/p/10960573.html中步骤连接JVM,连接时发现也会提示无法以ssl方式连接xxl,用户名和密码将以纯文本发送,点击是,我们发现在左侧主机下新加了一行记录,双击打开,即可监控数据

4、假设没有证书,visualvm启动时不添加后面的整数参数是不能够连接到JVM的,比如我们关闭刚打开的visualvm,然后双击jvisualvm.exe打开visualvm,将弹出一个对话框

也即是,如果没有证书,我们是无法连接1566这个启动时打开了ssl的JVM的

SSL访问,比设置密码重要,即使不设置密码,在生产环境也要通过SSL访问JVM

原文地址:https://www.cnblogs.com/qq931399960/p/10968477.html