2013-06-06 28 views
7

私は、証明書情報の読み取りに問題があります。私は、プログラムでAndroidのbouncycastleライブラリでjavaを使用して完全な情報を読んでいます。今、私はちょうどコンソールpkcs12証明書情報を読む

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

で任意の提案をkeytoolコマンドを使用していますか?

+0

何を試しましたか? –

+1

私は解決策を見つけました(下記)。 –

答えて

35

私は解決策を見つけました。主な考え方は、証明書をx509にキャストし、次にSubjectDNと解析値を取得することです。

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

javax.securityの代わりにjava.security。*クラスを使用してください。* –

+0

こんにちは@DiegoPlentzこのコードは常に機能するとは限りません。私のマシンでは、p12.getCertificate(別名)はnullを返します。 pfxファイルはopensslによって "openssl pkcs12 -export -out 1.pfx -in server.crt -inkey server.key"として作成されました。あなたのコードをwindows証明書マネージャーによってエクスポートされた別のpfxファイルでテストしましたが、うまくいきます。 –

+0

これは私にとっては問題なく動作しますが、デバイスに.p12ファイルをインストールする方法を知っていますか? –

関連する問題