我有一张由我(私人)CA颁发的证书。当我将它加载到Java KeyStore并调用aliases()
函数时,我在Oracle JVM(在Windows上)和IBM JVM(在Linux上)之间得到了不同的结果。
在Oracle上,我只获得一个别名 - 我的证书CN - “my_cert”, 在IBM上我得到两个别名 - “my_cert”和“my_ca”。
我使用KeyStore从我的证书中加载CA证书
在Oracle上,我可以在不知道证书的CN的情况下完成它 - 只需要调用
到aliases()
,只返回一个别名,获取其链,并从其链获取最高证书 - CA证书。 (我的代码如下)。
在IBM,我不能这样做,因为我有两个别名,我必须首先区分它们。
长话短说,我有三个问题:
aliases()
结果是否与主机平台(Windows / Linux)相关?我的代码:
KeyStore ks = KeyStore.getInstance("pkcs12");
ks.load(new FileInputStream(ICA_CERT_PATH), pass.toCharArray());
String alias = ks.aliases().nextElement();
Certificate[] chain = ks.getCertificateChain(alias);
/* Takes the highest certificate from chain - the root CA */
icaCert = (X509Certificate) chain[chain.length - 1];