jvisualvm ssl远程连接JVM

jvisualvm 远程ssl连接

一、没认证的 JMX连接 (不安全)

这种方式,仅限于测试环境,可以这样操作。生产环境为了安全起见,还是要使用带认证的方式连接。

  1. 远程jar包服务 启动时 java -jar [jvm参数] xx.jar添加JVM参数

    java -jar -Xmx512M -Xms256m -Djava.rmi.server.hostname=IP -Dcom.sun.management.jmxremote.port=1232 -Dcom.sun.management.jmxremote.rmi.port=1233 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false    xxl-job-admin-2.4.0.jar 
    

    参数解释:

    -Djava.rmi.server.hostname=IP \ 
    # 开启jvm远程监控端口
    -Dcom.sun.management.jmxremote.port=1232 \
    # 开启jvm远程管理端口,用于执行某些jvm命令
    -Dcom.sun.management.jmxremote.rmi.port=1233 \
    -Dcom.sun.management.jmxremote.ssl=false \
    -Dcom.sun.management.jmxremote.authenticate=false 
    
  2. xxx云 ,安全组策略, 入站规则放开 1232,1233端口

  3. ctrl + R输入 jvisualvm ,然后选择 “文件 –》 添加远程主机 ”

添加远程主机

  1. 右键 - 》 添加 JMX 连接。

添加JMX连接

二、SSL证书认证的JMX连接(安全)

需要提前生成 SSL认证的证书。

1. 进入生成证书的目录,并执行脚本

cd /mydata/xxl_job
# 内容比较多, 就写成一个shell脚本, 将需要参数传入即可 
vim jvisualvm_keyStore.sh# 将下面一段脚本复制拷贝,然后 wq 保存退出。
# 授可执行权限
chmod 755 jvisualvm_keyStore.sh# 脚本提取了参数,支持如下两个命令:##  -h:自定义ip或域名,-p:自定义密码  -d:自定义证书有效期,默认365天
sh jvisualvm_keyStore.sh -h  [HOSTNAME] -p [PASSWORD] -d [TIME_DAY] ## 或者 使用自定义密码生成秘钥
sh jvisualvm_keyStore.sh -p [PASSWORD]   ## 或者 使用自定义域名ip,使用默认密码生成秘钥
sh jvisualvm_keyStore.sh -h [HOSTNAME]   

2. 一键生成密钥脚本:

#!/bin/bash#============================================#
#   下面为生成密钥及相关信息配置,注意修改   #
#============================================#
# 默认变量值# 客户端密钥文件别名
CLIENT_ALIAS=visualvm# 服务端密钥文件别名
SERVICE_ALIAS=visualvm-server# 默认密码 
PASSWORD="study@1024"# 默认域名或ip
HOSTNAME="default_hostname"# 有效天数, 默认设置1年
TIME_DAY=365# 解析参数
while getopts ":h:p:d:" opt; docase ${opt} inh )HOSTNAME=$OPTARG;;p )PASSWORD=$OPTARG;;d )TIME_DAY=$OPTARG;;\?)echo "Invalid option: -$OPTARG" 1>&2echo "USER: sh ${0} -h [HOSTNAME] -p [PASSWORD] -d [TIME_DAY]" 1>&2exit 1;;: )echo "Invalid option: -$OPTARG requires an argument" 1>&2echo "USER: sh ${0} -h [HOSTNAME] -p [PASSWORD] -d [TIME_DAY]" 1>&2exit 1;;esac
done# 使用 shift 命令将处理过的参数移除,确保后面不再跟随任何非法参数
shift $((OPTIND -1))# 如果只输入 -h 参数,则使用默认密码
if [ "$PASSWORD" == "study@1024" ] && [ "$HOSTNAME" != "default_hostname" ]; thenecho "Using default password"
# 如果只输入 -p 参数,则使用默认 hostname
elif [ "$PASSWORD" != "study@1024" ] && [ "$HOSTNAME" == "default_hostname" ]; thenecho "Using default hostname"
# 如果同时输入 -h 和 -p 参数,则使用用户指定的值
elif [ "$PASSWORD" != "study@1024" ] && [ "$HOSTNAME" != "default_hostname" ]; thenecho "Using specified values"
elseecho "Invalid arguments: $@" 1>&2echo "USER: sh ${0} -h [HOSTNAME] -p [PASSWORD] -d [TIME_DAY]" 1>&2echo "OR USER: sh ${0} -h [HOSTNAME]  ,This will use the default password" 1>&2exit 1
fi# 输出变量值
echo "password: $PASSWORD"
echo "hostname: $HOSTNAME"
echo "time day: $TIME_DAY"#============================================#
#          客户端相关密钥          #
#============================================## client keystore
keytool -genkeypair -alias $CLIENT_ALIAS -keyalg RSA -validity $TIME_DAY -storetype pkcs12 -keystore "$CLIENT_ALIAS.keystore" -storepass $PASSWORD -keypass $PASSWORD -dname "CN=$HOST OU=Alphalion O=dev L=GZ S=GD C=CN"# client cer
keytool -exportcert -alias $CLIENT_ALIAS -storetype pkcs12 -keystore "$CLIENT_ALIAS.keystore" -file "$CLIENT_ALIAS.cer" -storepass $PASSWORD# 这个命令会将客户端的证书导入到服务端的信任库中,以便服务端能够在 SSL/TLS 握手期间验证客户端证书的有效性。
keytool -importcert -alias $CLIENT_ALIAS -file "$CLIENT_ALIAS.cer" -keystore "$SERVICE_ALIAS.truststore" -storepass $PASSWORD -noprompt#============================================#
#          服务端相关密钥          #
#============================================## server keystore(跟第一步格式是一样的)	
keytool -genkeypair -alias $SERVICE_ALIAS -keyalg RSA -validity $TIME_DAY -storetype pkcs12 -keystore "$SERVICE_ALIAS.keystore" -storepass $PASSWORD -keypass $PASSWORD -dname "CN=$HOST OU=Alphalion O=dev L=GZ S=GD C=CN"# server cer (跟第二步格式一样)
keytool -exportcert -alias $SERVICE_ALIAS -storetype pkcs12 -keystore "$SERVICE_ALIAS.keystore" -file "$SERVICE_ALIAS.cer" -storepass $PASSWORD# 这个命令会将服务端的证书导入到客户端的信任库中,以便客户端能够在 SSL/TLS 握手期间验证服务端证书的有效性。
keytool -importcert -alias $SERVICE_ALIAS -file $SERVICE_ALIAS.cer -keystore "$CLIENT_ALIAS.truststore" -storepass $PASSWORD -noprompt#============================================#
#                    移动清理                 #
#============================================#
# 转移目录。服务端的密钥保存在server目录下,客户端的密钥保存在client目录下
mkdir -p visualvm/client visualvm/server
cp $CLIENT_ALIAS.cer $CLIENT_ALIAS.keystore $CLIENT_ALIAS.truststore visualvm/client
cp $SERVICE_ALIAS.cer $SERVICE_ALIAS.keystore $SERVICE_ALIAS.truststore visualvm/server# 删除源文件
rm {$CLIENT_ALIAS,$SERVICE_ALIAS}.cer {$CLIENT_ALIAS,$SERVICE_ALIAS}.keystore {$CLIENT_ALIAS,$SERVICE_ALIAS}.truststore

Tip: 秘钥文件制作是依赖上一步操作的,制作 时要按照顺序执行
指令会生成6个文件

  • 客户端秘钥放到了visualvm/client目录,用来认证访问服务端的。
  • 服务端秘钥放到了visualvm/server目录,用来加密认证的

执行脚本

3. 服务器端运行jar包时,开启ssl连接:

ssl连接指定 visualvm/server目录下的秘钥文件,用来加密认证

jar包启动完整参数:

如果需要在服务器端启动时查看具体的证书验证成功失败与否信息,可以加入"-Djavax.net.debug=all",意思是打印JVM所有详细日志

java -jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1232  -Dcom.sun.management.jmxremote.rmi.port=1233 -Djava.rmi.server.hostname=IP  -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=true  -Dcom.sun.management.jmxremote.registry.ssl=true  -Dcom.sun.management.jmxremote.ssl.need.client.auth=true  -Djavax.net.ssl.keyStore=/mydata/xxl-job/visualvm/server/visualvm-server.keystore  -Djavax.net.ssl.keyStorePassword=study@1024  -Djavax.net.ssl.trustStore=/mydata/xxl-job/visualvm/server/visualvm-server.truststore -Djavax.net.ssl.trustStorePassword=study@1024   xxl-job-admin-2.4.0.jar

参数说明 :

java -jar -Dcom.sun.management.jmxremote \ 
-Dcom.sun.management.jmxremote.port=1232 \
-Dcom.sun.management.jmxremote.rmi.port=1233 \
-Djava.rmi.server.hostname=IP \
-Dcom.sun.management.jmxremote.authenticate=false \
# 开启远程ssl认证
-Dcom.sun.management.jmxremote.ssl=true \
-Dcom.sun.management.jmxremote.registry.ssl=true \
-Dcom.sun.management.jmxremote.ssl.need.client.auth=true \
# 指定服务器秘钥
-Djavax.net.ssl.keyStore=/mydata/xxl-job/visualvm/server/visualvm-server.keystore \
-Djavax.net.ssl.keyStorePassword=study@1024 \
-Djavax.net.ssl.trustStore=/mydata/xxl-job/visualvm/server/visualvm-server.truststore 
-Djavax.net.ssl.trustStorePassword=study@1024  \
xxl-job-admin.jar

4. 客户端远程SSL连接

  1. 拷贝 visualvm/client目录到本地,用来认证访问服务端的。
  2. %JAVA_HOME%/bin 目录下,调出 cmd窗口,输入如下命令:

一般都有配置jdk的环境变量。可以直接 ctrl + R ,输入cmd调出窗口。

输入完命令后,会自动打开 jvisualvm 程序

# -J-D 指定 JVM的运行参数, 开启ssl连接,指定ssl秘钥和秘钥。如果ssl证书没有问题,就会自动连上远程服务器JVM,如果校验失败,相对于执行普通的"jvisualvm"命令,不会有任何错误提示。具体的证书校验失败想打印的话,需要在服务器端启动时加入"-Djavax.net.debug=all"打印JVM所有详细日志jvisualvm -J-Djavax.net.ssl.keyStore="C:/Users/HZL/yk证书/visualvm/client/visualvm.keystore" -J-Djavax.net.ssl.keyStorePassword="study@1024" -J-Djavax.net.ssl.trustStore="C:/Users/HZL/yk证书/visualvm/client/visualvm.truststore" -J-Djavax.net.ssl.trustStorePassword="study@1024"

首次加载 jvisualvm 不会自动ssl连接远程JVM,还需要手动添加。

  1. 选择 “文件-添加远程主机”

远程主机

  1. 选择 “添加JMX连接”

添加JMX连接

如果证书 ssl 秘钥和密码完全正确,则会自动连接上远程JVM

成功

转载

[VisualVM工具的使用] : https://blog.csdn.net/TheLongir/article/details/124629717

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/255059.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python中等待几秒代码:让你的程序更高效

Python中等待几秒代码:让你的程序更高效 在编写Python程序时,有时我们需要让程序等待几秒钟之后再继续执行。这个操作非常常见,尤其是在需要与API接口交互的时候。在本文中,我们将会介绍Python语言中等待几秒的相关知识&#xff…

chatgpt赋能python:精度问题在Python编程中的影响及解决方法

精度问题在Python编程中的影响及解决方法 Python是一种解释性编程语言,以其简单易学、开发效率高等特点而广受欢迎。然而,Python中的浮点数精度问题却经常困扰着程序员。在本文中,我们将详细介绍Python中精度问题的影响及解决方法。 精度问…

【Windows设置篇】字符集-简繁体的切换

【Windows设置篇】字符集-简繁体的切换 微软自带键盘,有次傻啦吧唧的一直找繁体切换简体的方法,进设置里面切换地区,更换地址也不行,后面才发现是在"字符集"里面切换—【蘇小沐】 文章目录 【Windows设置篇】字符集-简…

红米AirDots无线蓝牙耳机成功连接WIN7电脑

红米AirDots无线蓝牙耳机能否连接安装WIN7操作系统的电脑呢? 当笔者产生应用需求时,并没有确定的答案。在网上也没有找到相关资料。于是在网购前特意咨询了客服,答复是需要在电脑上另行加装一个蓝牙接收器,理论上可以&#xff0c…

win10 电脑 连接 华为蓝牙耳机 (华为蓝牙耳机,win10搜索不到解决办法)

■前言 之前连接过,又忘了,记录一下。 ■操作 step1 【添加蓝牙或其他设备】 --- 【蓝牙】 step2 长按开机键 ・红色灯会一闪一闪 ・耳机里面的声音是,【等待连接,等待连接。。。】 step3 --- ■注意 连接成功过的设备&…

QCY T1S 蓝牙耳机使用说明

QCY T1S 蓝牙耳机使用说明 headphone [ˈhɛdfəʊn]:n. 头戴受话器,耳机,送发话器 earphone [ˈɪəfəʊn]:n. 耳机1. QCY T1S 蓝牙耳机操作规范 2. QCY T1S 配对使用 3. QCY T1S 常见问题 References https://yongqiang.blog.…

法规标准-ISO 11270标准解读(2014版)

ISO 11270是做什么的? ISO 11270全名为智能交通系统-车道保持辅助系统(LKAS)-性能要求及测试步骤,其中主要是对LKAS系统的功能要求、性能要求及测试步骤进行了介绍。 功能要求 LKAS应至少提供以下操作和状态转换: ——从LKAS off到LKAS on的…

电脑蓝牙耳机默认声音过高的解决办法

目录 一、问题描述 二、解决办法 三、具体操作 一、问题描述 蓝牙耳机连上电脑后,默认值是80%,并且每次连接蓝牙耳机后,音量都恢复到默认值80%; 二、解决办法 百度出来的解决办法都是去注册表禁用绝对音量,写篇文…

笔记本自带蓝牙连接蓝牙耳机

操作步骤 01、下载蓝牙驱动,并安装完成 02、蓝牙耳机开机,进入等待连接状态(有些蓝牙耳机需进入配对状态) 03、在笔记本中添加蓝牙设备,参考下图 04、选中自己的蓝牙耳机,单击 下一步。参考下图 05、驱动安…

捷波朗storm蓝牙耳机_Jabra 捷波朗 storm3 弦月3 蓝牙耳机

Jabra 捷波朗 storm3 弦月3 蓝牙耳机 2015-07-20 16:32:49 21点赞 36收藏 39评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无上限,点击查看活动详情捷波朗(Jabra)STORM 弦月3 蓝牙耳机 黑色寺库网提供…

oppo手机忘记手机密码怎么办

工具 oppo所有型号 ColorOS3.0及以上 一台可以上网的电脑 登录oppo云空间官网 输入oppo账号密码登录后,点击查找 有绑定邮箱或紧急联系人的,会提示要进行验证。 验证完进入查找后,点击忘记密码的手机 填写完联系号码后,输入…

手机开机密码忘记了怎么办?

今天姥姥忘记了她那手机的开机密码,把她那手机拿过来,说让我给弄好。因为我家在农村,家里人很多科技产品都不太熟悉,微信也就会简单使用一些操作。家里人对我学的专业也不是很了解,他们以为计算机专业,学的…

php开发支付宝支付密码忘记了怎么办_php开发支付宝支付密码忘记了怎么办_玩机小技巧:OPPO手机忘记锁屏密码怎么办?......

大家买来手机后首先要对手机如何设置呢? 回答较多的应该是给手机设置上屏幕锁! 是的没错,手机现在已经是我们生活中必不可少的全能工具,出门不带现金可以,但是手机是必须要带的,当今社会,支付方…

win10密码忘了怎么办_OPPO Find X忘了手机密码怎么办?手机怎么解锁?

众所周知,手机已经成为了我们日常生活中的一部分。但是有些粗心大意的朋友,往往前一天晚上刚设置的密码,到第二天早上想要用手机的时候突然忘了手机密码,那么小编今天就教大家怎么解决这个问题。 天语LA1(6GB64GB全网通)手机锁屏密…

苹果手机密码设置在哪里_oppo怎么设置SIM密码-oppo手机SIM卡密码设置详细教程

oppo怎么设置SIM密码?每个手机想要正常使用,都需要插入一张SIM卡,但是你知道SIM卡也会有密码吗,当手机丢失之后,可以拨打电话申请SIM卡挂失,OPPO手机SIM卡密码怎么设置,oppo怎么设置SIM卡密码&a…

win10密码忘了怎么办_OPPO A92s忘了手机密码怎么办?手机怎么解锁?

众所周知,手机已经成为了我们日常生活中的一部分。但是有些粗心大意的朋友,往往前一天晚上刚设置的密码,到第二天早上想要用手机的时候突然忘了手机密码,那么小编今天就教大家怎么解决这个问题。 天语LA1(6GB64GB全网通)手机锁屏密…

oppo手机android在哪里设置密码,oppo锁屏方法以及修改锁屏密码的具体介绍【图文】...

国内手机的发展速度大家应该知道吧!可以用一个迅猛来形容,现在市场上的手机品牌大多数都是国产手机品牌,这一点我想大家都应该清楚吧!oppo手机大家肯定知道,因为这是今年销量最好的国产手机品牌,尤其是oppor9。那么大家对oppo手机有多少了解呢?除了简单的知道外,还有哪些…

WebSocket

一. WebSocket概述 在后端服务器与服务器之间,HTTP请求是可以相互发送的,但是在浏览器与服务器之间,HTTP请求只能从浏览器发起,方向固定,不能从服务器往浏览器主动去发起HTTP请求。 问题:服务器无法直接向浏…

curl常用命令

1、curl -v url:默认发出Get请求,查看页面源码,显示一次通信过程,包含请求头、响应头、返回内容 2、curl -i url: 显示响应头、返回内容body 3、curl -I url:只显示响应头 4、curl url:默认使…

如何检查自己的笔记本电池是否需要更换(电池自检)

1.检查电池实际可充电量: ①winR键 ②输入 powercfg/batteryreport ③根据提示打开网址 如果相差太多就需要更换电池啦