Java 似乎无需指定密码即可访问 SSL 信任库?

Java SSL truststore seems to be accessible without specifying password?

我有一个文件 ote.truststore,我使用 Keystore Explorer 5.1 设置了自定义密码,我将它用于 API servlet 运行 Tomcat7/Java1.7。 我无法理解的是,即使我没有在代码、配置或 ssl.properties.[=11 的任何地方指定密码,servlet 是如何设法打开文件的=]

我知道 servlet 正在打开正确的文件,因为我启用了 javax.net.debug.all,并且我可以在日志中看到它找到的可信 CA 证书 ("CN=GeoTrust Primary Certification Authority - G3")。

我验证了我可以将密码更改为任意随机字符串,并且 servlet 仍然打开信任库。我还验证了如果我删除文件并重新启动 servlet,我会在日志中得到 "trustStore is: No File Available, using empty keystore."。

JKS 格式中是否有内容表明密码不适用于信任库文件?这对我来说似乎很奇怪。当我尝试在未指定正确密码的情况下在 Keystore Explorer 中打开文件时,它会尽职地解密失败。

读取信任库不需要密码。不涉及私钥。

您仍然需要密码才能修改信任库。此外,在读取信任库时,如果提供密码,它可用于验证信任库的完整性。

ref - http://bayou.io/release/0.9/javadoc/bayou/ssl/SslConf.html#trustStorePass-java.lang.String-