有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java存储加密密码的地方

我知道安全和加密的原因。但我真的很困惑如何设置或使用它

我正在对应用程序用于访问数据库和其他第三方API的密码进行加密。我的工作假设是,应该不惜一切代价避免使用纯文本密码。但我开始觉得我在追我的尾巴,把一切都锁起来

我决定使用AES加密对密码进行加密,并使用密钥库存储密钥。从我目前发现的情况来看,这似乎是一个相当标准的解决方案

我试图保护的应用程序是托管在Tomcat服务器上的web应用程序。我的意图是配置Tomcat JVM参数,以包括密钥库的路径和密钥库密码。然后,每个应用程序都可以通过以下方式获得密钥库的句柄:

String keystorePath = System.getProperty("keystore.path");
String keystorePassword = System.getProperty("keystore.password");
KeyStore ks = KeyStore.getInstance("PKCS12");

try (FileInputStream fis = new FileInputStream(keystorePath)) {
    ks.load(fis, password); 
}

然后,每个应用程序将负责知道所需密钥的密钥别名。但现在我有了这个明文密钥库密码。回到纯文本密码不好的假设,我该如何处理这个密码?即使我将这些变量移动到环境变量中,密钥库的位置和访问密钥库的密码都存储在同一个位置。我觉得这很愚蠢,但我能做些什么呢

更糟糕的是,密钥库建议对每个密钥使用密码。那么,这些数据存储在哪里呢?被第二个密钥库解密

我觉得我正在进入一个过度设计的死亡螺旋

  • 是否有可接受/推荐的解决方案
  • 即使我仍然有一个纯文本密码,我如何证明它“足够安全”

tl:dr-我已经加密了我的密码,但现在我的密码有密码了,我又回到了同样的问题!!救命


共 (0) 个答案