gpt4 book ai didi

java - Keystore的密码管理

转载 作者:太空宇宙 更新时间:2023-11-03 13:55:34 24 4
gpt4 key购买 nike

keystore (无论它是用于“ keystore ”还是“信任库”)在创建后使用 load() 方法进行初始化。一个版本需要一个与 keystore 文件对应的 InputStream,以及用于解密该文件的密码。以编程方式向方法提供密码对我来说似乎很奇怪。

例如,服务器使用 keystore 来存储其私钥和相关证书。 keystore 中的信息是敏感信息,因此受密码保护。以编程方式将密码传递给 load() 方法有哪些问题?最佳做法是什么?

另一个例子,但现在是关于信任库的。客户端有一个信任库,它存储受信任的 CA 的证书。据我了解,信任库不包含服务器的证书,而只包含允许验证服务器证书的 CA 的证书。我看到的一个信任库示例是与 JRE 一起出现的示例(在 security 文件夹中 - cacerts)。通过查看配置,我可以看到它受默认密码 changeit 保护。我知道信任库是使用 keystore 实现的,因此它(或者可能是可选的?)使用密码进行加密。但是,由于信任库通常将公共(public)信息(受信任的 CA 的证书)存储在文件中,为什么建议更改密码?

谢谢

最佳答案

Providing the password to the method programmatically seems strange to me.

我不确定为什么这会很奇怪。应用程序需要能够在某一时刻获取 keystore 的内容。密码需要以某种方式传递给它。将它传递给 load() 方法并不比其他解决方案更有意义(当然要避免硬编码)。或者,您可以改用使用回调的方法。如果您认为这不合适,您可以使用 PKCS#11 提供程序和硬件 token (尽管您仍然需要在某处输入密码/PIN)或使用类似 Apple KeychainStore 的东西(密码不是已使用,但操作系统钥匙串(keychain)服务负责处理)。

关于信任库,实际上有两个密码在使用。当使用 JKS 格式时,它们可以不同。一种保护 keystore 本身,一种保护对私有(private)条目的访问 (getKey)。在这种情况下, keystore 密码用于防止未授权方更改信任库(并添加他们自己的 CA 或服务器证书)。

关于java - Keystore的密码管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11541097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com