【发布时间】:2021-02-26 03:45:52
【问题描述】:
我的 java 应用程序使用信任和密钥存储。为了给他们传递密码,我使用在与这些商店位于同一文件夹中的 shell 脚本(启动应用程序)中设置的 java 属性:
-Djavax.net.ssl.keyStorePassword=keystore-password \
-Djavax.net.ssl.trustStorePassword=truststore-password\
谁能说 - 以这种方式保存这些密码是否安全。我这样认为 - 如果有人对此文件夹具有读/写访问权限,他无论如何都可以读/写此文件并存储。如果我错了,将这些参数传递给应用程序的最安全方法是什么?
【问题讨论】:
-
首先,信任库密码无关紧要 - 您的应用程序信任的 public 证书集。只要没有人可以修改信任库本身,密码就不能真正保护任何敏感信息。但是,不要使用
-Djavax.net.ssl.keyStorePassword=keystore-password作为命令行参数。它拥有您自己的 private 密钥,并将其放在命令行上使其可能对系统上的所有进程可见。问题是您必须将密码放在进程可以读取的地方。很难获得比文件系统权限更好的权限。
标签: java security ssl keystore truststore