2013-06-06 37 views
7

tôi gặp sự cố với thông tin chứng chỉ readng.I muốn đọc thông tin đầy đủ bằng java với thư viện bouncycastle trong Android theo lập trình. Bây giờ, tôi chỉ đang sử dụng lệnh keytool trong bảng điều khiểnĐọc thông tin chứng chỉ pkcs12

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

Bất kỳ đề xuất nào?

+0

Và bạn đã thử những gì? –

+1

Tôi đã tìm thấy giải pháp (bên dưới), cảm ơn sự quan tâm của bạn. –

Trả lời

35

Tôi đã tìm thấy giải pháp, ý tưởng chính là truyền chứng chỉ đến x509, sau đó nhận các giá trị SubjectDN và phân tích cú pháp.

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

Chỉ cần nhớ sử dụng các lớp java.security. * Thay vì javax.security. * –

+0

Xin chào @DiegoPlentz Mã này không phải lúc nào cũng hoạt động. Trên máy tính của tôi, p12.getCertificate (alias) trả về null. Tệp pfx được tạo bởi openssl dưới dạng "openssl pkcs12 -export -out 1.pfx -in server.crt -inkey server.key". Tôi đã kiểm tra mã của bạn với một tệp pfx khác, được xuất bởi trình quản lý chứng chỉ windows, nó hoạt động tốt. –

+0

Điều này có hiệu quả đối với tôi nhưng bất kỳ ai biết cách cài đặt tệp .p12 trên thiết bị? –

Các vấn đề liên quan