【问题标题】:Is there any java API to convert certificate from 'DER' format to pkcs#12 format是否有任何 java API 将证书从“DER”格式转换为 pkcs#12 格式
【发布时间】:2011-05-21 09:19:29
【问题描述】:

我需要将证书从 DER 格式转换为 pkcs#12 格式。我知道我可以使用 openssl 命令来做到这一点。我正在寻找可以完成这项工作的 java API / 类。 任何帮助将不胜感激。

【问题讨论】:

  • 证书仅包含公钥和标识信息,而 pkcs#12 格式的大多数使用都希望公钥和私钥都在 pkcs#12 文件中。我不知道任何期望公钥采用 pkcs#12 格式的应用程序。

标签: java certificate x509certificate pkcs#12


【解决方案1】:

您可以尝试将 PKCS#12 容器加载为密钥库:

java.security.KeyStore ks = java.security.KeyStore.getInstance("PKCS12");
ks.load(new java.io.FileInputStream("yourStore.p12"), "yourPassword".toCharArray());

加载后,可以枚举容器内的元素:

for(Enumeration enum = ks.aliases(); enum.hasMoreElements(); ) {
    String alias = (String) enum.nextElement();
    System.out.println("@:" + alias);
    if (ks.isKeyEntry(alias)) {
        System.out.println("return PrivateKey");
        PrivateKey pk = (PrivateKey) ks.getKey(alias, password);
        // ...
    }
}

【讨论】:

    【解决方案2】:

    据我了解,PEM 只是 DER 内容的 Base64 编码字符串,带有适当的页眉和页脚行。例如,要转换为 Base64,您可以使用 javax.mail.internet.MimeUtility

    【讨论】:

      【解决方案3】:

      这可以从 PEM 转换 pkcs

      openssl pkcs12 -export -in pem-certificate-and-key-file -out pkcs-12-certificate and-key-file
      

      让我们先将您的 DER 转换为 PEM

      openssl dsa -inform PEM|DER -outform DER|PEM -in pem-file|der-file -out der-file|pem-file
      

      【讨论】:

      • 我知道 openssl 可以做到这一点,正在寻找可以做同样事情的 java API。
      • @Unicorn - 你能不使用 System.getRuntime() 来执行这些吗?
      • 这不是 Java API。
      【解决方案4】:

      我已经从 Portecle 获得了很多里程。

      如果您必须以编程方式执行此操作,那么您需要的大部分内容都在 Java 中的 KeyStore 类中。至于用户友好性,嗯,它对它的朋友很有选择性。打开一个商店,添加它,保存它。如果您需要证书链,那会有点复杂。

      关于从 DER 编码中检索证书,请参阅 X509Certificate javadoc。尤其是对 CertificateFactory 的引用。

      【讨论】:

        猜你喜欢
        • 2017-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-28
        • 2017-09-16
        • 2021-02-12
        • 2012-12-08
        相关资源
        最近更新 更多