我有许多Java应用程序通过SSL连接连接到其他应用程序和服务。在开发过程中,我可以通过使用JVM ARGS指定密钥库/信任库使用,密码:运行Java进程时隐藏JKS密钥库/信任库密码
-Djavax.net.ssl.trustStore=certificate.jks
-Djavax.net.ssl.trustStorePassword=mypassword
-Djavax.net.ssl.keyStore=certificate.jks
-Djavax.net.ssl.keyStorePassword=mypassword
-Djavax.net.ssl.keyStoreType=jks
这完美的作品。但是,在生产中隐藏密码时有一个要求,使用JVM参数意味着查看进程列表的任何人都能够以明文形式查看密码。
有没有简单的方法来解决这个问题?我考虑将证书导入JRE的lib/security/cacerts文件,但我的理解是,这仍然需要密码。一种选择是将加密的密码存储在一个文件中,然后让应用程序即时读取和解密,但这将涉及更改和重新发布所有应用程序(其中有不少),所以我如果可能的话,宁愿避免这种情况。 javax.net.ssl库是否具有对加密密码的本地内置支持(即使它的操作与base64编码一样简单,或者使密码不是明文的任何内容)?
任何建议非常感谢。
同意,在某些地方,必须存储密钥或密码。我想这是我们必须用流程/用户帐户/文件权限解决的问题。谢谢! – Matt