为什么即使我们提供空密码 JKS 加载也能工作?

Moz*_*ath 4 java security ssl keystore jks

我有一个JKS使用密码生成的文件。我有一个 java 代码,它使用它keystore来连接到一个 url。现在,当我加载密钥库时,我错误地将密码作为null. 但令我惊讶的是,这种联系仍然存在。

KeyStore store = KeyStore.getInstance("JKS");
store.load(stream, null);
Run Code Online (Sandbox Code Playgroud)

这种行为在我看来很可疑。对此有解释吗?

编辑:

如果此行为符合预期,那么为什么在通过 keytool 创建密钥库时需要密码短语?

use*_*421 7

如果您不提供密码:

  1. 密钥库在打开时未进行完整性检查。
  2. 您无法访问任何私钥条目。

对于KeyStore用作信任库的a ,即仅包含受信任的证书,这是正常用法。

如果此行为符合预期,那么为什么在通过 keytool 创建密钥库时需要密码短语?

这样您就可以在开场时提供一个,从而获得上述 (1) 或 (2) 处的行为。