2013-06-06 19 views
7

Mam problem z odczytaniem informacji o certyfikacie. Chcę czytać pełną informację przy użyciu java z biblioteką bouncycastle w programie Android. Teraz używam tylko polecenia keytool w konsoliCzytanie informacji o certyfikacie pkcs12

>keytool -list -keystore 1.p12 -storetype pkcs12 -v 

Wszelkie sugestie?

+0

I co próbowaliście? –

+1

Znalazłem rozwiązanie (poniżej), dziękuję za uwagę. –

Odpowiedz

35

Znalazłem rozwiązanie, głównym pomysłem jest przesłanie certyfikatu do x509, a następnie pobranie wartości SubjectDN i przeanalizowanie wartości.

public class TestClass { 
    public static void main(String[] args) throws Exception { 

     KeyStore p12 = KeyStore.getInstance("pkcs12"); 
     p12.load(new FileInputStream("pkcs.p12"), "password".toCharArray()); 
     Enumeration e = p12.aliases(); 
     while (e.hasMoreElements()) { 
      String alias = (String) e.nextElement(); 
      X509Certificate c = (X509Certificate) p12.getCertificate(alias); 
      Principal subject = c.getSubjectDN(); 
      String subjectArray[] = subject.toString().split(","); 
      for (String s : subjectArray) { 
       String[] str = s.trim().split("="); 
       String key = str[0]; 
       String value = str[1]; 
       System.out.println(key + " - " + value); 
      } 
     } 
    } 
} 
+3

Pamiętaj tylko, aby używać klas java.security. * Zamiast javax.security. * –

+0

Witam @DiegoPlentz Ten kod nie zawsze działa. Na moim komputerze p12.getCertificate (alias) zwraca null. Plik pfx został stworzony przez openssl jako "openssl pkcs12 -export -out 1.pfx -in server.crt -inkey server.key". Przetestowałem twój kod za pomocą innego pliku pfx, który został wyeksportowany przez menedżera certyfikatów Windows, działa dobrze. –

+0

To działa dobrze dla mnie, ale każdy wie, jak zainstalować plik .p12 na urządzeniu? –