【问题标题】:Reading pkcs12 certificate information读取pkcs12证书信息
【发布时间】:2013-06-02 22:42:28
【问题描述】:

我在读取证书信息时遇到问题。我想以编程方式在 Android 中使用带有 bouncycastle 库的 java 来阅读完整信息。现在,我只是在控制台中使用 keytool 命令:

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

有什么建议吗?

【问题讨论】:

  • 你试过什么?
  • 我已经找到了解决方案(如下),感谢您的关注。

标签: java bouncycastle jce pkcs#12


【解决方案1】:

我找到了解决方案,主要思想是将证书转换为 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<String> e = p12.aliases();
        while (e.hasMoreElements()) {
            String alias = 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);
            }
        }
    }
}

【讨论】:

  • 请记住使用 java.security.* 类而不是 javax.security.*
  • 嗨@DiegoPlentz 此代码并不总是有效。在我的机器上, p12.getCertificate(alias) 返回 null。 pfx 文件由 openssl 创建为“openssl pkcs12 -export -out 1.pfx -in server.crt -inkey server.key”。我用另一个由 Windows 证书管理器导出的 pfx 文件测试了你的代码,它工作正常。
  • 这对我来说很好用,但有人知道如何在设备上安装 .p12 文件吗?
  • @ChangmingSun 也许尝试传递“-name”选项。更多信息:stackoverflow.com/questions/21138420/…
  • 一篇不错的文章,其中包含更多细节。pixelstech.net/article/…
猜你喜欢
  • 2011-09-14
  • 2017-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-21
  • 1970-01-01
  • 2011-12-13
相关资源
最近更新 更多