我们可以在Java trustStore的逻辑文件夹结构中组织每个带有多个子项的证书链

问题描述 投票:0回答:1

假设对于SSL / TLS,我有2个rootCA的CA1和CA2(均为自签名),并且每个CA均已签名并颁发了5个最终实体证书。我需要将每个rootCA及其对应的5个子公共证书存储在Java trustStore中的某些逻辑文件夹结构中,以便给定父CA公共证书或别名,我想检索所有已发行的相应子证书。例如,给定CA1别名,我想检索CA1,并且只有CA1颁发的子证书,并且同样适用于CA2。

我已经检查了Java的java.security.KeyStore,该API提供了用于存储证书链的API,但是它仅接受信任链,在该信任链中可以将一个父级和一个孩子添加到信任库中。我们不能将多个同一级别的子证书添加到该父证书。 keytool实用程序也未提供满足我要求的解决方案。

我们有什么方法可以将信任证书的逻辑文件夹结构中的多个子证书的父证书存储在其中,我可以检索与特定父别名相关的所有子证书?

java ssl keystore keytool truststore
1个回答
0
投票

您不能按照逻辑顺序将证书存储在Java密钥库中。 Java密钥库基本上是键值(别名和条目)存储。该条目可以是证书或密钥,也可以是密钥对(私钥和相应的证书链,其中包括公钥)。

您必须编写自己的自定义逻辑来满足您的要求。您可以通过查看证书的issuerDNsubjectDN属性来确定证书是否由给定的CA签名。如果证书是自签名的(如CA证书),则issuerDNsubjectDN将相同。如果证书是由CA签名的,则将CA的subjectDN放在已签名证书的颁发者DN中。这样,您可以识别证书链的层次结构。但是,如果使用此方法,则必须在信任库中多次遍历所有证书。

我不确定您的用例是什么,但是如果您需要使用信任库来与服务器建立SSL连接,那么最好将所有证书存储在同一信任库中,而不必担心逻辑顺序,然后将信任库输入到JVM中,它将神奇地识别出要使用的正确证书。

© www.soinside.com 2019 - 2024. All rights reserved.