【问题标题】:How to avoid having keystore/trustore plain text password in code base?如何避免在代码库中使用密钥库/信任库纯文本密码?
【发布时间】:2017-01-09 09:48:20
【问题描述】:

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

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

【问题讨论】:

  • 您不必向信任库提供密码。在某些时候,您必须信任运营商。通常的解决方案是通过访问卡进行物理安全。

标签: java security password-protection mutual-authentication


【解决方案1】:

通常,证书和信任库不包含必须保密的信息。必须保密的一件事是密钥库中包含的私钥。用密码保护密钥库就像把钥匙放在保险箱里,然后用第二把钥匙锁住保险箱——所以它并没有真正的帮助。

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多