2013-06-06 15 views
7

Ho un problema con le informazioni sul certificato readng. Voglio leggere le informazioni complete utilizzando java con la libreria bouncycastle in Android a livello di programmazione. Ora, sto solo usando il comando keytool in consoleLettura informazioni certificato pkcs12

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

Qualche suggerimento?

+0

E che cosa hai provato? –

+1

Ho trovato la soluzione (sotto), grazie per l'attenzione. –

risposta

35

Ho trovato la soluzione, l'idea principale è di trasmettere il certificato a x509, quindi ottenere il SubjectDN e analizzare i valori.

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

Ricorda solo di usare java.security. * Classi invece di javax.security. * –

+0

Ciao @DiegoPlentz Questo codice non funziona sempre. Sulla mia macchina, p12.getCertificate (alias) restituisce null. Il file pfx è stato creato da openssl come "openssl pkcs12 -export -out 1.pfx -in server.crt -inkey server.key". Ho testato il tuo codice con un altro file pfx, che è stato esportato da Windows Certificate Manager, funziona perfettamente. –

+0

Questo funziona per me, ma nessuno sa come installare il file .p12 sul dispositivo? –

Problemi correlati