Java 读取CA证书失败(GetCertificateCain不返回完整链)

Java 读取CA证书失败(GetCertificateCain不返回完整链),java,certificate,x509certificate,keychain,pkcs#12,Java,Certificate,X509certificate,Keychain,Pkcs#12,我正在使用下面的方法读取证书 KeyStore ks = KeyStore.getInstance("pkcs12"); ks.load(in, password); String alias = ks.aliases().nextElement(); Certificate[] chain = ks.getCertificateChain(alias); ... 这个方法非常实用,但是我在一个证书中遇到了一个问题,它没有加载证书的完整字符串 例如1:

我正在使用下面的方法读取证书

    KeyStore ks = KeyStore.getInstance("pkcs12");
    ks.load(in, password);
    String alias = ks.aliases().nextElement();
    Certificate[] chain = ks.getCertificateChain(alias);
    ...
这个方法非常实用,但是我在一个证书中遇到了一个问题,它没有加载证书的完整字符串

例如1:

例如2:

有人知道会发生什么吗

编辑

为了更好地解释,此证书用于连接到WS。在通信过程中,WS返回以下拒绝连接已关闭:javax.net.ssl.SSLHandshakeException:收到致命警报:未知\u ca 连接到此WS需要完整的证书链表示

如下所述,证书在JAVA中显示失败,但它在.NET中运行良好,根据以下说明正确显示证书链:

返回: 证书链(先用用户证书排序,然后是零个或多个证书颁发机构),如果给定别名不存在或不包含证书链,则为null


这意味着链中没有更多的证书(自签名证书),或者PKCS#12消息中不包含所需的链元素,并且无法通过其他来源获得这些元素。

我理解您的观点。但是,问题仍然存在,因为如果通过.NET导入,相同的证书可以正常工作。通过使用.NET的一个示例,系统可以加载和显示所有证书链。NET和Java是具有不同API的不同平台,可能会产生不同的结果。