我正在尝试将PrivateKey(假设的DER)格式的内容导出为以PEM格式编码的字节流。
链接here讨论了使用BouncyCastle和PemWriter将密钥转储到PEM格式。
有没有办法从PrivateKey对象创建BouncyCastle对象,或者将PrivateKey导出为PEM字节流?
答案 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