如何避免在代码库中使用密钥库/可信任纯文本密码?

时间:2017-01-09 09:48:21

标签: java security password-protection mutual-authentication

为了满足我们的内部安全要求,我编写了一个使用证书与服务器进行相互身份验证的Java客户端。但是,要将证书放入SSLContext,我必须为密钥库和可信任者提供密码。密码是代码中的plaint文本,这也违反了我们的要求。

有没有办法避免在代码中以纯文本形式存在密钥库/信任库密码?我已经尝试过Stack Overflow上的答案,建议创建一个没有密码的商店和/或直接将证书加载到SSLContext中,但是当我尝试这些方法时,身份验证失败。

1 个答案:

答案 0 :(得分:1)

通常,证书和信任库不包含必须保密的信息。必须保密的一件事是密钥库中包含的私钥。使用密码保护密钥库有点像将密钥放入保险箱并使用第二个密钥锁定安全 - 因此它并没有真正帮助。

无论如何,您可以从未签入VCS的(资源)文件中读取密码,并将其留给部署以提供该文件(可以通过限制对适当用户的读取访问来保护该文件)操作系统级别。)

但是,当然,您也可以直接使用密钥库进行操作 - 无需使用密码。

如果要求很高,请查看Trusted Platform Module

密钥和信任库可以通过系统属性进行配置,因此可以从源代码中完全处理它。