从进程列表中隐藏密钥库密码
hiding keystore password from process list
我有一个 Linux 服务器和一个 java 应用程序。我正在使用 Java 1.7 到 运行 这个应用程序。我想启用 JMX 以进行监控。 JMX 连接应由 SSL 保护。到目前为止很简单。
我的问题:如何以安全的方式告诉 jvm 密钥库密码?到目前为止,只有当我通过命令行参数“-Djavax.net.ssl.keyStorePassword=mypwd”传递密码时,ssl 连接才有效。似乎必须在初始化 jvm 时设置密码。
如果我在控制台上查看进程列表 (ps -ef),我可以看到我的 java 进程 - 但包含所有命令行参数。所以我的密钥库密码以明文形式列出给每个可以列出活动进程的人(例如通过 snmp 代理)。如何从进程列表中隐藏密码?
我尝试使用配置文件 (com.sun.management.config.file)。它适用于所有 jmx 特定参数。但是我的密码被忽略了。
在命令行参数中以明文形式提供密码真的是唯一的方法吗?
是的 - 我知道 Java 1.7 已停止服务。如果Java 1.8 确实解决了这个问题,我会立即更改。
感谢帮助!
如果您在 System.setProperty("javax.net.ssl.keyStorePassword", "mypwd")
之前 在您的程序中使用任何 SSL 功能,它应该可以工作。这意味着您应该尽可能在调用 main
之后尽早设置它。如果你愿意,你可以在之前加载你自己的属性文件(只能由用户读取运行 JVM),其中可以存储密码。
更新
管理所需的系统属性也可以在配置文件中设置。来自 Monitoring and Management Using JMX Technology:
You can set out-of-the-box monitoring and management properties in a
configuration file or on the command line. Properties specified on the
command line override properties in a configuration file. The default
location for the configuration file is
JRE_HOME/lib/management/management.properties
. The Java VM reads this
file if either of the command-line properties
com.sun.management.jmxremote
or com.sun.management.jmxremote.port
are
set.
本文档适用于 Java 1.8,但我想这同样适用于 Java 1.7。如果没有,我想你必须按照你的建议进行切换。
我有一个 Linux 服务器和一个 java 应用程序。我正在使用 Java 1.7 到 运行 这个应用程序。我想启用 JMX 以进行监控。 JMX 连接应由 SSL 保护。到目前为止很简单。
我的问题:如何以安全的方式告诉 jvm 密钥库密码?到目前为止,只有当我通过命令行参数“-Djavax.net.ssl.keyStorePassword=mypwd”传递密码时,ssl 连接才有效。似乎必须在初始化 jvm 时设置密码。
如果我在控制台上查看进程列表 (ps -ef),我可以看到我的 java 进程 - 但包含所有命令行参数。所以我的密钥库密码以明文形式列出给每个可以列出活动进程的人(例如通过 snmp 代理)。如何从进程列表中隐藏密码?
我尝试使用配置文件 (com.sun.management.config.file)。它适用于所有 jmx 特定参数。但是我的密码被忽略了。
在命令行参数中以明文形式提供密码真的是唯一的方法吗?
是的 - 我知道 Java 1.7 已停止服务。如果Java 1.8 确实解决了这个问题,我会立即更改。
感谢帮助!
如果您在 System.setProperty("javax.net.ssl.keyStorePassword", "mypwd")
之前 在您的程序中使用任何 SSL 功能,它应该可以工作。这意味着您应该尽可能在调用 main
之后尽早设置它。如果你愿意,你可以在之前加载你自己的属性文件(只能由用户读取运行 JVM),其中可以存储密码。
更新
管理所需的系统属性也可以在配置文件中设置。来自 Monitoring and Management Using JMX Technology:
You can set out-of-the-box monitoring and management properties in a configuration file or on the command line. Properties specified on the command line override properties in a configuration file. The default location for the configuration file is JRE_HOME
/lib/management/management.properties
. The Java VM reads this file if either of the command-line propertiescom.sun.management.jmxremote
orcom.sun.management.jmxremote.port
are set.
本文档适用于 Java 1.8,但我想这同样适用于 Java 1.7。如果没有,我想你必须按照你的建议进行切换。