使用Java将.der转换为.pem

时间:2018-02-20 05:23:58

标签: private-key pem der

我正在尝试将PrivateKey(假设的DER)格式的内容导出为以PEM格式编码的字节流。

链接here讨论了使用BouncyCastle和PemWriter将密钥转储到PEM格式。

有没有办法从PrivateKey对象创建BouncyCastle对象,或者将PrivateKey导出为PEM字节流?

2 个答案:

答案 0 :(得分:1)

代码段似乎可以完成这项工作:

KeyStore keystore = KeyStore.Instance("JKS");
InputStream stream = new FileInputStream("path-to-jks-file");
keystore.load(stream, null);
PrivateKey key = (PrivateKey) keystore.getKey("mykey", "password".toCharArray());
byte[] prvkey = key.getEncoded();
String encoded = Base64.getEncoder().encodeToString(prvkey);
String key_pem = "-----BEGIN PRIVATE KEY-----" + encoded + "-----END PRIVATE KEY-----";

答案 1 :(得分:-1)

此过程使用OpenSSL将DER编码的证书转换为ASCII(Base64)编码的证书。通常,DER编码的证书使用.CRT或.CER作为文件扩展名,但无论扩展名如何,DER编码证书都是不能以纯文本形式读取的证书(与PEM编码证书不同)。

PEM编码的证书也可以使用.CRT或CER作为文件名的扩展名,在这种情况下,您只需使用.PEM扩展名将文件复制到新名称:

$ cp hostname.cer hostname.pem

要将DER编码的证书转换为PEM编码,OpenSSL命令如下:

$ openssl x509 -inform der -in hostname.cer -out hostname.pem

例如:

$ openssl x509 -inform der -in /opt/cloudera/security/pki/hostname.cer -out /tmp/hostname.pem