如何从trust.p12证书文件中获取SSL证书主题,颁发者,开始日期和过期日期

时间:2018-05-29 09:35:43

标签: file ssl-certificate websphere-8 p12

  

环境 - IBM websphere应用程序服务器8.5.5

     

文件 - trust.p12和key.p12(在trust.p12中,有20个证书   加)

     

通过使用openssl commnd,我可以看到完整的证书   详情如下

MAC迭代2048 MAC验证确定PKCS7加密数据: pbeWithSHA1And40BitRC2-CBC,Iteration 2048证书袋 属性     localKeyID:XX XX XX XX XX XX XX XX XX XX XX XX XX 48 54 A0 47 88 1D 90     friendlyName:test-server subject = / C = US / ST = IC / L = test / O = XXX Security / OU = XXX / CN = something1 issuer = / C = US / ST = IC / L = test / O = XXX 安全/ OU = XXXX / CN = something1 ----- BEGIN CERTIFICATE ----- ...... ...... -----结束证书-----

证书袋行李属性     localKeyID:XX XX XX XX XX XX XX XX     friendlyName:root subject = / C = US / ST = IC / L = test / O = XXX / OU = XXX / CN = testroot issuer = / C = US / ST = IC / L = test / O = XXX / OU = XXXX / CN = testroot ----- BEGIN CERTIFICATE ----- ...... ...... -----结束证书-----

  

但我试图从中获取主题,发行人,开始日期和过期日期   使用以下命令获得trust.p12证书文件。

     

第一种方法

     

openssl pkcs12 -in trust.p12 -nokeys | openssl x509 -noout

     

-dates -subject -issuer -alias

     

第二种方法

     

openssl pkcs12 -in trust.p12 -out trust.pem -nodes

     

cat trust.pem | openssl x509 -noout -enddate

     然而,我只获得1个证书的输出而不是20个   证书通过以上命令。

     

1)有没有其他方法可以逐个获取20个证书   喜欢传递别名吗?

     

2)如何逐个获取20个证书的主题,发行人,开始日期和到期日期?

1 个答案:

答案 0 :(得分:0)

如果可以在Java中完成,怎么办。您需要知道所有20个证书的别名并将其定义为字符串数组。

还可以将别名定义为配置文件,这样,如果将来别名发生更改,则不必更改代码。

static List<X509Certificate> certList = new ArrayList<>();
public static void main(String[] args) throws KeyStoreException
{
    String[] alias = { "1","2"};
    KeyStore keyStore = getKeyStore();
    for (int i = 0; i < alias.length; i++) {
        X509Certificate certFromKeyStore = (X509Certificate) keyStore.getCertificate(alias[i]);
        System.out.println(certFromKeyStore.getSubjectDN());
        certList.add(certFromKeyStore);
    }
    for (X509Certificate x509 : certList) {
        // verify all the information you looking for
        System.out.println(x509.getSerialNumber() + " "+ x509.getIssuerDN() );
    }
}

public static KeyStore getKeyStore()
{
    KeyStore keyStore = null;
    try
    {
        keyStore = KeyStore.getInstance("PKCS12");
        InputStream input = new FileInputStream("PATHTOP12");
        keyStore.load(input, "YOUR_P12_PASSWORD".toCharArray());
    } catch (Exception e) 
    {
        // catch the exception 
    }
    return keyStore;
}

让我知道是否有帮助。 您是否特别希望在openssl中完成此操作?