0

环境 - IBM websphere 应用服务器 8.5.5

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

通过使用 openssl commnd,我可以看到完整的证书详细信息,如下所示

MAC 迭代 2048 MAC 验证 OK PKCS7 加密数据:pbeWithSHA1And40BitRC2-CBC,迭代 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 Security/OU=XXXX/CN= something1 -----BEGIN CERTIFICATE----- ... ... ... -----END CERTIFICATE-----

证书包包属性localKeyID:XX XX XX XX XX XX XX XX友好名称: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----- ... ... ... -----END 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

猫信任.pem | openssl x509 -noout -enddate

但是,我通过上述命令仅获得 1 个证书而不是 20 个证书的输出。

1)有没有其他方法可以通过别名来一一获取20个证书?

2) 如何一一获取20个证书的主题、颁发者、开始日期和过期日期?

4

1 回答 1

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 中完成此操作?

于 2018-09-07T10:22:40.823 回答