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

时间:2014-11-02 10:21:55

标签: java oracle keystore

我有一张由我(私人)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,我不能这样做,因为我有两个别名,我必须首先区分它们。

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

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

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

0 个答案:

没有答案