2010-06-14 79 views
4

在我的Web应用程序中,我访问存储在Java KeyStore中的私钥。我想知道什么是最好/推荐的方式来存储KeyStore和私钥的密码。如何存储Java KeyStore密码?

我已经考虑过使用属性文件,但在生产环境(在纯文本文件中存储密码)中使用它看起来不太安全。另外,在我的代码中对密码进行硬编码并不是我愿意接受的选项。

谢谢。

回答

-7

您可以使用属性文件,因为您提到只是散列密码以获得额外的安全性salt hash密码。这就解决了必须以纯文本保存密码的问题。然后你可以使用MD5或SHA1密码来散列它,个人选择。

+3

如果你散列密码,你将如何检索密码?散列密码是没有意义的。 – 2011-03-16 13:01:50

+0

你不检索它,你再次散列它,并检查它们是否相同。例如,如果我有你的用户名的散列:d3a03c197da2c09307f06f8513443599 然后在应用程序中,你会散列用户放入什么,所以你的用户名,看看是否是相同的。 – Dean 2011-03-16 19:19:00

+1

我必须同意Καrτhικ,您将无法使用其密码的散列打开密钥存储区。使用密码散列保护密钥存储不会增加任何额外的安全性。 – nihilist84 2015-06-11 09:22:07

5

这是一个棘手的引导问题。一些选项:

  • 让你的应用程序提示用户解锁密钥库(不是很友好,但有可能)

  • 商店的所有者密码只读文件(0400),并用它来解锁密钥库。攻击者必须闯入您的服务器才能读取文件。这似乎是最广泛使用的技术
  • 使用HSM
  • 使用类似Hashicorp Vault(但它也有引导问题)。