在JKS中存储TrustedCertEntry和PrivateKeyEntry的后果?

时间:2017-11-08 13:53:44

标签: java tomcat ssl keytool jks

我最近加入了一个项目,该项目在Tomcat中运行一个应用程序,该项目使用单个文件作为KeyStore和TrustStore。换句话说,它包括trustedCertEntry和PrivateKeyEntry类型的条目。

从Tomcat 8.5.6升级到8.5.20时,我意识到catalina.out正在给我

printf()

解决方案是从密钥库中删除trustedCertEntry条目。

对我而言,这似乎很明显,你想要将这些分开。我的问题是,使用同一个文件作为密钥库和信任库是否会产生任何可能的安全后果?如果是这样,为什么Java(或SSL)允许将这些文件保存在同一个文件中?

1 个答案:

答案 0 :(得分:1)

SSL和TLS是可互操作的协议;根据IETF的政策和传统,他们对在任何一个端点或任何端点存储任何东西和一切都没有任何说明。 "那是当地的问题。"

Java历史上对TrustedCert和PrivateKey使用一种文件格式(JKS),不仅用于SSL / TLS,而且用于所有公钥加密(并且可选地还有JCEKS一些对称加密), Java9正在切换到PKCS12。使用相同的格式并不意味着您必须使用相同的文件,我会说它更适合使用单独的文件,但我没有看到使用单个文件时的实际安全问题只要将任何包含私钥的文件限制在一个系统中,或者将绝对必要的系统限制为少,再加上适当的备份;然而,这并不是一个真正的编程问题,你可能会尝试在security.SX上找到更好的答案。

Tomcat 8.5 sorta-kinda结合了以前单独的(通常是令人困惑的)不同的Java-JSSE和APR = OpenSSL堆栈配置,我相信密钥库只能包含PrivateKey的这种限制是这样的结果变化