Java Keystore.alias()-IBM和Oracle之间的不同实现

Java Keystore.alias()-IBM和Oracle之间的不同实现,java,oracle,keystore,Java,Oracle,Keystore,我有一个由我的私人CA颁发的证书。当我将其加载到Java密钥库并调用别名函数时,在Windows上的Oracle JVM和linux上的IBM JVM之间会得到不同的结果 在Oracle上,我只有一个别名—我的证书的CN—我的证书, 在IBM上,我有两个别名-我的证书和我的ca 我使用密钥库从证书中加载CA证书。 在Oracle上,我可以在不知道证书的CN-just调用的情况下执行此操作 对于别名,它只返回一个别名,获取其链,并从其链获取最高的证书-CA证书。我的代码如下。 在IBM上,我不能这

我有一个由我的私人CA颁发的证书。当我将其加载到Java密钥库并调用别名函数时,在Windows上的Oracle JVM和linux上的IBM JVM之间会得到不同的结果

在Oracle上,我只有一个别名—我的证书的CN—我的证书, 在IBM上,我有两个别名-我的证书和我的ca

我使用密钥库从证书中加载CA证书。 在Oracle上,我可以在不知道证书的CN-just调用的情况下执行此操作 对于别名,它只返回一个别名,获取其链,并从其链获取最高的证书-CA证书。我的代码如下。 在IBM上,我不能这样做,因为我有两个别名,我必须首先区分它们

长话短说,我有三个问题:

我可以在不使用密钥库的情况下加载受密码保护的文件吗? 不同的别名结果是否与主机平台Windows/Linux相关? 我可以在不知道证书别名的情况下使用Java IBM密钥库提取CA证书吗? 我的代码:

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];

两个JDK访问的物理密钥库是否相同?还是两个不同的密钥库?它似乎是后者,由两个不同的命令构建。它是相同的p12文件。