我正在使用JConsole安全地连接到另一台计算机上的远程JMX端点。 我正在竭尽全力在过程的每个步骤中使用TLS,这包括让主机相互认证。我是通过将每个人的证书导入到另一个人的信任库中来完成的
我已经使所有这些正常工作,并且现在使用以下命令启动了jconsole:
jconsole -J-Djavax.net.ssl.keyStore=/path/to/keystore -J-Djavax.net.ssl.trustStore=/path/to/trustStore -J-Djavax.net.ssl.keyStorePassword=password -J-Djavax.net.ssl.trustStorePassword=password
但是,我不喜欢这种解决方案,因为我现在在命令行上提供密码,这使得任何有权访问主机或我们的监视工具的人都可以读取它。
我通过指定ssl配置文件的位置(保留了密码和密钥库的路径)来解决了随附的Java应用程序的问题:
java -Dcom.sun.management.jmxremote.ssl.config.file=/path/to/ssl_config ...
但是,这不适用于jconsole。我什至没有收到任何指示甚至正在引用或读取配置文件的指示。我尝试了多种方法来引用配置文件,并尝试让jconsole从文件中读取密码,但是没有一种有效。
有人知道向jconsole提供密码而不用在命令行中以纯文本格式提供密码的方法吗?
答案 0 :(得分:0)
您可以传递 -Dcom.sun.management.jmxremote.password.file = PASSFILE ,其中PASSFILE是文件名,其中包含用户名/密码对,以空格分隔。
请参见https://gquintana.github.io/2016/09/01/Securing-remote-JMX.html