是否有任何Java API将证书从'DER'格式转换为pkcs#12格式

时间:2010-12-07 05:02:25

标签: java certificate x509certificate pkcs#12

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

4 个答案:

答案 0 :(得分: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);
        // ...
    }
}

答案 1 :(得分:0)

这可以从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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我从Portecle那里获得了很多好处。

如果必须以编程方式完成,那么您需要的大部分内容都在Java的KeyStore类中。至于用户友好性,嗯,它对其朋友非常有选择性。打开商店,添加商店,保存。如果您需要证书链,那将会更复杂一些。

至于从DER编码中检索证书,请参阅X509Certificate javadoc。特别是对CertificateFactory的引用。