在 JKS 中存储 TrustedCertEntry 和 PrivateKeyEntry 的后果?
Consequences of storing TrustedCertEntry and PrivateKeyEntry in JKS?
我最近加入了一个项目,该项目在 Tomcat 中有一个应用程序 运行,它使用单个文件作为 KeyStore 和 TrustStore。换句话说,它包括类型为 trustedCertEntry 和 PrivateKeyEntry 的条目。
从 Tomcat 8.5.6 升级到 8.5.20 时,我意识到 catalina.out 给了我
java.lang.IllegalArgumentException: java.security.KeyStoreException: Cannot store non-PrivateKeys
解决方案是从密钥库中删除 trustedCertEntry 条目。
对我来说,这似乎很明显,您希望将它们分开。我的问题是,使用同一个文件作为密钥库和信任库是否有任何可能的安全后果?如果是这样,为什么 Java(或 SSL)允许保留这些内容在同一个文件中?
SSL 和 TLS 是可互操作的协议;按照 IETF 的政策和传统,他们只字不提在任一端点或任何端点存储任何东西。 "That's a local matter."
Java 历史上对 TrustedCert 和 PrivateKey 使用一种文件格式 (JKS),不仅对 SSL/TLS 而且对所有 public-key 加密(以及可选的 JCEKS 一些对称加密),并且 Java9 正在为两者切换到 PKCS12。使用相同的格式并不意味着您必须使用相同的文件,我会说最好使用单独的文件,但我没有看到使用单个文件的实际安全问题,只要您保留任何包含私钥仅限于一个系统,或尽可能少的系统,加上适当的备份;然而,这并不是真正的编程问题,您可以尝试在 security.SX.
上获得更好的答案
Tomcat 8.5 sorta-kinda 为 Java-JSSE 和 APR=OpenSSL 栈结合了以前分开的和(经常令人困惑的)不同的配置,我相信密钥库只能包含这个限制私钥是该更改的结果。
我最近加入了一个项目,该项目在 Tomcat 中有一个应用程序 运行,它使用单个文件作为 KeyStore 和 TrustStore。换句话说,它包括类型为 trustedCertEntry 和 PrivateKeyEntry 的条目。
从 Tomcat 8.5.6 升级到 8.5.20 时,我意识到 catalina.out 给了我
java.lang.IllegalArgumentException: java.security.KeyStoreException: Cannot store non-PrivateKeys
解决方案是从密钥库中删除 trustedCertEntry 条目。
对我来说,这似乎很明显,您希望将它们分开。我的问题是,使用同一个文件作为密钥库和信任库是否有任何可能的安全后果?如果是这样,为什么 Java(或 SSL)允许保留这些内容在同一个文件中?
SSL 和 TLS 是可互操作的协议;按照 IETF 的政策和传统,他们只字不提在任一端点或任何端点存储任何东西。 "That's a local matter."
Java 历史上对 TrustedCert 和 PrivateKey 使用一种文件格式 (JKS),不仅对 SSL/TLS 而且对所有 public-key 加密(以及可选的 JCEKS 一些对称加密),并且 Java9 正在为两者切换到 PKCS12。使用相同的格式并不意味着您必须使用相同的文件,我会说最好使用单独的文件,但我没有看到使用单个文件的实际安全问题,只要您保留任何包含私钥仅限于一个系统,或尽可能少的系统,加上适当的备份;然而,这并不是真正的编程问题,您可以尝试在 security.SX.
上获得更好的答案Tomcat 8.5 sorta-kinda 为 Java-JSSE 和 APR=OpenSSL 栈结合了以前分开的和(经常令人困惑的)不同的配置,我相信密钥库只能包含这个限制私钥是该更改的结果。