我正在使用下面的方法读取证书。
KeyStore ks = KeyStore.getInstance("pkcs12");
ks.load(in, password);
String alias = ks.aliases().nextElement();
Certificate[] chain = ks.getCertificateChain(alias);
...
此方法非常有用,但是我在证书中遇到了一个问题,该证书不会加载证书的完整字符串。
示例1:阅读证书1时,以下语句返回4个字符串
示例2:阅读证书2时,下面的语句仅返回一个字符串
有人知道会发生什么吗?
编辑
试图更好地解释,该证书用于连接到WS。在通信过程中,WS返回以下拒绝连接已关闭:javax.net.ssl.sslhandshakeexception:接收致命警报:UNKNOWN_CA与此WS的连接需要完整的认证链展示。
如下所述,证书显示了Java中的故障,但它在.NET中完美工作,正确显示认证链
根据API文档:
返回: 证书链(首先使用用户的证书订购,然后是零或更多证书授权机构(,或者如果给定的别名不存在或不包含证书链
,则为null
这意味着,链条中没有更多证书(自签名证书(或所需的链元素不包含在PKCS#12消息中,也无法通过其他来源获得。