Как получить тему сертификата SSL, издателя, дату начала и дату истечения срока действия из файла сертификата trust.p12 - PullRequest
0 голосов
/ 29 мая 2018

Среда - сервер приложений IBM websphere 8.5.5

Файл - trust.p12 и key.p12 (в trust.p12 добавлено 20 сертификатов)

с использованием opensslКомманд, я могу видеть полную информацию о сертификате, как показано ниже

MAC Итерация 2048 MAC проверена OK PKCS7 Зашифрованные данные: pbeWithSHA1And40BitRC2-CBC, Итерация 2048 Сумка сертификата Bag Атрибуты localKeyID: XX XX XX XX XX XX XXXX XX XX XX XX 48 54 A0 47 88 1D 90 friendlyName: субъект тестового сервера = / C = US / ST = IC / L = test / O = XXX Security / OU = XXX / CN = что-то1 эмитент = / C =США / ST = IC / L = тест / O = XXX Безопасность / OU = XXXX / CN = что-то1 ----- НАЧАТЬ СЕРТИФИКАТ ----- ... ... ... ----- КОНЕЦ СЕРТИФИКАТА-----

Сумка для сертификата. Атрибуты сумки localKeyID: XX XX XX XX XX XX XX XX Имя_привита: корневой субъект = / C = US / ST = IC / L = тест / O = XXX / OU = XXX/ CN = издатель testroot = / C = US / ST = IC / L = test / O = XXX / OU = XXXX / CN = testroot ----- НАЧАТЬ СЕРТИФИКАТ ----- ... ... ... ----- КОНЕЦ СЕРТИФИКАТА -----

Но я попытался получить subject, эмитент, дата начала и дата истечения срока действия из файла сертификата trust.p12 с помощью следующих команд.

1-й метод

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

-даты -subject -issuer -alias

2-й метод

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

cat trust.pem |openssl x509 -noout -enddate

однако я получаю вывод только для одного сертификата вместо 20 сертификатов через команды.

1) Есть ли другой способ получить 20 сертификатов один за другимчто-то вроде передачи псевдонима?

2) Как выбрать тему, эмитента, дату начала и дату истечения срока действия для 20 сертификатов по одному?

1 Ответ

0 голосов
/ 07 сентября 2018

Как насчет, если бы это можно было сделать в 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?

...