如何使用openssl将java生成的公钥转换为pem格式

时间:2017-02-21 12:08:07

标签: java python rsa keytool

我有一个公共RSA密钥,如下所示:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHn/hfvTLRXViBXTmBhNYEIJeGGGDkmrYBxCRelri
LEYEcrwWrzp0au9nEISpjMlXeEW4+T82bCM22+JUXZpIga5qdBrPkjU08Ktf5n7Nsd7n9ZeI0YoAKCu
b3ulVExcxGeS3RVxFai9ozERlavpoTOdUzEH6YWHP4reFfpMpLzwIDAQAB

我需要将其转换为PEM格式,以便我可以使用此公钥编写自己的python代码,我看到有相反操作的许多答案,但是现在我需要将其转换为JAVA样式到PEM,有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

你可以像这样创建一个bash脚本:

#!/bin/bash

# Loop through all the certs in the current folder that have the .cer extension
for cert in *.cer
do

#get filename wihtout ext
filename="${cert%.*}"
#echo ${filename} 

#convert to PEM
openssl x509 -inform der -in ${cert} -outform pem -out ${filename}.crt

done

我用它将证书转换为pem格式。希望它可以帮助

答案 1 :(得分:1)

只需转换回base64编码的pub键并将其抛给openssl:

echo "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHn/hfvTLRXViBXTmBhNYEIJeGGGDkmrYBxCRelriLEYEcrwWrzp0au9nEISpjMlXeEW4+T82bCM22+JUXZpIga5qdBrPkjU08Ktf5n7Nsd7n9ZeI0YoAKCub3ulVExcxGeS3RVxFai9ozERlavpoTOdUzEH6YWHP4reFfpMpLzwIDAQAB" | base64 -d | openssl rsa -inform der -pubin -out rsakey.pub

-inform der告诉openssl将密钥作为二进制文件(默认为PEM)

-pubin告诉公众(默认为私人)

-out是写密钥

另一种方法是在base64编码的rsa公钥之前和之后附加openssl标记:

sed 's/^/-----BEGIN PUBLIC KEY-----\n/;s/$/\n-----END PUBLIC KEY-----/' <<< "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHn/hfvTLRXViBXTmBhNYEIJeGGGDkmrYBxCRelriLEYEcrwWrzp0au9nEISpjMlXeEW4+T82bCM22+JUXZpIga5qdBrPkjU08Ktf5n7Nsd7n9ZeI0YoAKCub3ulVExcxGeS3RVxFai9ozERlavpoTOdUzEH6YWHP4reFfpMpLzwIDAQAB" | openssl rsa -pubin