环境 - 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个证书的主题,发行人,开始日期和到期日期?
答案 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中完成此操作?